Questions tagged «sql-server»

所有版本的Microsoft SQL Server(非MySQL)。还请添加特定于版本的标记,例如sql-server-2016,因为它通常与问题相关。

6
选择具有相同ID但为null的行,并在该ID的另一列中选择其他值
我只想获得具有值NULL和某些值的行,而不是NULL特定的用户名列。 如果该特定用户名的两行均为null或均具有null以外的其他值,则该行不应出现在输出中。如果同一个用户名存在多于两行的null和其他值,则应显示它们。 以下是示例示例和输出。如何使用sql查询来完成? +----------+-------+ | username | col2 | +----------+-------+ | a | abc | | a | ef | | b | null | | b | null | | c | der | | c | null | +----------+-------+ 输出 +----------+------+ | username | col2 | +----------+------+ | …

1
允许非系统管理员,SQL Server代理作业的非所有者执行该作业
我有一份运行SSIS程序包的工作。 当前所有者是代理帐户。我可以从sys-admin帐户手动运行作业。 我们的网络服务使用受限帐户登录。它需要执行作业。当前它根本看不到工作(当我尝试按名称执行时,它说它不存在)。 我尝试将工作所有者更改为受限帐户。现在它可以看到该作业,但是该作业执行失败,因为它不再运行SSIS包。 必须有一种方法允许受限帐户运行另一个帐户拥有的工作,对吗?

2
为什么不使用我的计划指南?
最近,我们遇到了临界点问题,由于查询优化器会忽略搜索列上的非聚集索引,因此一些过去几秒钟即可完成执行的报表查询现在要花费2分钟以上的时间。下面的示例查询: select top 100 * from [dbo].[t_Call] where ID > 0 and throwtime between '3/20/2014 7:00:00 AM' and '3/24/2014 6:59:59 AM' order by id 该ID列是聚集索引,并且Throwtime具有非聚集索引。在这种情况下,我们注意到使用了排序方式throwtime而不是ID更改查询计划和非聚集索引。我们还计划归档一些旧数据(当前有2000万行!!)。但是在应用程序中进行这些更改将需要一些时间,我需要找到一种方法使报表运行得相当快,而无需在应用程序级别进行更改(哦,这就是生命!)。 输入计划指南。我使用非聚集索引查询提示创建了以下计划指南,由于某种原因,仍然不使用非聚集索引。我想念什么吗? EXEC sp_create_plan_guide @name = N'[prod2reports_callthrowtime]', @stmt = N'select top 100 * from [dbo] . [t_Call] where ID > @0 and @1 < = ThrowTime …


2
合并两个具有不同WHERE子句的SELECT查询
我有一张桌子。我需要合并两个SELECT查询。两者都有不同的where子句。例如 SELECT U_REGN as 'Region', COUNT(callID) as 'OpenServices', SUM(CASE WHEN descrption LIKE '%DFC%' THEN 1 ELSE 0 END) 'DFC' FROM OSCL WHERE ([status] = - 3) GROUP BY U_REGN ORDER BY 'OpenServices' desc 这给我结果 Region | OpenServices | DFC Karaci | 14 | 4 Lahore | 13 | 3 Islamabad …

1
sqlproj中的参考程序集未部署到服务器
我有一个Visual Studio 2013数据库项目这需要一个修改版本的FASTJSON作为参考。我在参考属性中选择了Generate DDL,如以下屏幕截图所示: 在.sqlproj msbuild文件中: <Reference Include="fastJSON"> <HintPath>..\..\fastjson\output\net40\fastJSON.dll</HintPath> <GenerateSqlClrDdl>True</GenerateSqlClrDdl> </Reference> 但是bin / debug / Project.sql不包含的行CREATE ASSEMBLY fastJSON . . .。手动添加程序集有效,然后我的项目将部署并运行。如何使Visual Studio部署我的程序集?

1
显示备份信息(成功和失败)的查询SQL Server
我有两个备份两个不同数据库的作业。 作业1备份DB1 作业2备份DB2 由于驱动器1上的空间不足而导致作业1失败,因此DB1 备份失败。要解决该问题,我只需要添加空间。没关系 今天,当这个问题已经发生了一个月时,我被告知这一点。是的,我知道这很疯狂,但这是开发人员 我想要获得DB1的完整备份历史记录。我知道我可以从msdb.dbo.backupset表中检索成功的备份信息,但是我想知道是否存在一个查询,该查询显示数据库的备份失败。 我的下面查询显示了12/31 / 13-1 / 27/14中特定数据库的备份历史记录。信息包括服务器,数据库名称,备份开始和结束时间,备份数据库所需的总时间,数据库大小和备份集名称。 SELECT distinct CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, msdb.dbo.backupset.database_name, msdb.dbo.backupset.backup_start_date, msdb.dbo.backupset.backup_finish_date, CAST((DATEDIFF(second, msdb.dbo.backupset.backup_start_date,msdb.dbo.backupset.backup_finish_date)) AS varchar)+ ' secs ' AS [Total Time] , Cast(msdb.dbo.backupset.backup_size/1024/1024 AS numeric(10,2)) AS 'Backup Size(MB)', msdb.dbo.backupset.name AS backupset_name FROM msdb.dbo.backupmediafamily INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id …

2
重新启动数据库(重新启动后)后如何清除错误15404
SQL Server代理每小时作业每隔一段时间(例如,几个月)就会开始报告错误15404,并继续这样做直到被干预。 [298] SQLServer错误:15404,无法获取有关Windows NT组/用户'DOMAIN_NAME \ SomeDomainAccount'的信息,错误代码0x6e。[SQLSTATE 42000](ConnIsLoginSysAdmin) 有时,第一次失败是在手动重新启动SQL Server Engine和SQL Server代理服务后立即发生的。可以通过重新启动计算机来解决此问题。 作业所有者是错误消息中列出的名称,并且是SQL Server管理员。 SQL Server Engine服务帐户看起来像是一个服务帐户(我相信它是默认的安装帐户(比一般的NetworkService好一个级别,以防止Engine / Agent实例之间发生干扰): NT Service\MSSQL$INSTNAME 如果该作业始终失败,那将是一回事,但是由于该作业在重新启动后成功,这使我认为应该使用的服务帐户就可以正常工作,并且存在一些A / D时序问题或错误。当询问IT人员有关A / D配置的信息时,响应通常是“什么都没有改变”。 重新启动引擎和代理服务可能导致作业开始失败。 重新启动计算机即可解决问题。 随后立即重新启动引擎和代理程序不再导致作业失败。 链接: 如何解决SQL Server 8198错误


3
用另一个表中的数据覆盖表-SQL
我们的用户想要从生产中刷新QA数据库,但希望有两个表(分别称为T1和T2)保留原始QA数据。因此,我将两个表从QA(DB1)复制到临时QA数据库(DB2)。然后从生产中刷新DB1。刷新之后,我想将T1和T2数据从DB2覆盖到DB1,以便它可以包含预刷新的QA值。 我已经完成以下工作: 采用 select * INTO D1.dbo.T1 FROM D2.dbo.T1 然后从产品刷新D1 然后使用以下步骤截断T1: SELECT COUNT(*) AS BeforeTruncateCount FROM T1; GO TRUNCATE TABLE T1; GO SELECT COUNT(*) AS AfterTruncateCount FROM T1; GO 现在,当我返回将数据从D2.T1复制到D1.T1时,我得到一个错误,即数据库中已经存在一个名为T1的对象。 我应该放下桌子复制吗? 还是整个过程中有更好的方法?

4
数据库联机时是否可以复制数据库文件?
我正在努力在SQL Server 2008 R2 SP1上建立生产数据库的开发副本。目前,两个开发人员已很少使用实时数据库来进行只读查询,但是新数据库也将对其进行更新。 由于数据库为2.1TB,并且总共花了3天时间来还原和更新到我们需要测试的最新版本,所以我最初的计划是创建一组新的备份文件,然后从这些文件中还原。这将允许我在同一SQL实例和计算机上创建数据库的开发副本,而不必使当前数据库脱机。 但是,为了节省几天的时间,我认为仅复制物理数据库文件并附加数据库的新副本可能是一个好主意。不幸的是,当我尝试复制时,出现错误,该错误是指SQL Server对这些文件施加的锁定。 由于除了传输日志文件外,我什么都不能使数据库脱机(我可以在人们早上进来之前完成此操作),是否有任何方法可以复制实时数据库文件而无需将数据库置于脱机状态?还是我应该等到人们回家后再这样做?

3
非聚集索引比聚集索引快吗?
这两个表具有相同的结构,并且每个表中都有19972行。为了练习索引,我创建了两个具有相同结构的表并创建了 clustered index on persontb(BusinessEntityID) 和 nonclustered index on Persontb_NC(BusinessEntityId) 和表结构 BusinessEntityID int FirstName varchar(100) LastName varchar(100) -- Nonclusted key on businessentityid takes 38% SELECT BusinessEntityId from Persontb_NC WHERE businessentityid BETWEEN 400 AND 4000 -- CLustered key businessentityid takes 62% SELECT BusinessEntityId from persontb WHERE businessentityid BETWEEN 400 AND 4000 …

2
链接服务器可供未经许可的用户使用
我有用户看到他们不应该看到的链接服务器。 链接服务器被定义为只有我才能访问它,但是每个人都可以看到和使用它。 我使用以下步骤创建了新的链接服务器: 将SSMS对象资源管理器连接到SQL Server实例 展开Server Objects,右键单击Linked Servers并单击鼠标左键New Linked Server... 在General选项卡中选择SQL Server了Server type和写入服务器的名称 在Security上部的标签下,点击Add,选择“ sa”作为Local Login,输入Remote User的名称,然后Remote Password 在Security下部的标签下(在下方For a login not defined in the list above, connections will:),选择第一个选项:Not be made 点击OK并开始测试 现在,唯一应该看到链接服务器的人是我(“ sa”),但其他用户可以某种方式看到它并使用它。 注1:可以使用链接服务器的用户对远程服务器具有权限,他们看不到不应看到的数据,只是在不能访问时才可以从链接服务器访问数据。 注意2:sysadmin在这两种情况下,我都是唯一的。

1
执行跨数据库事务时,信息存储在哪个事务日志中?
给出以下代码段: -- error checking omitted for brevity begin tran exec database1..my_stored_procedure exec database2..my_other_stored_procedure if (@@error <> 0) rollback commit 交易信息将插入到哪个数据库的交易日志中? 我希望两个日志都可以获取所有数据,因为如果您尝试重播database1的事务日志就没有任何意义,它只会影响该数据库。我也希望您将无法database1在database2不存在的服务器上重播的事务日志,反之亦然。 ..但我愿意接受更正!

1
如何为多个SQL Server实例配置内存?
我们有一组在同一虚拟服务器上运行的SQL Server实例(2008 R2)。每个实例代表我们开发周期中的一个阶段(Dev / Test / Stage / etc。)。实例在任何给定时间都必须处于联机状态,但是负载往往一次只能隔离到一个实例,具体取决于我们在发布生命周期中所处的位置。 SQL Server似乎抢占并保留了我们设置为最大值的任何内存量。我想知道是否可以通过任何方式将实例配置为“智能”的内存消耗,以使它们在需要时不会互相阻碍获取内存。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.