Questions tagged «sql-server»

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

2
想要在过滤索引中放置OR时有什么解决方法?
想要在过滤索引中放置OR时有什么解决方法? create index FIDX_tblbOrders_sdtmOrdCreated_INCL on dbo.tblBOrder(sdtmOrdCreated) INCLUDE (sintMarketID, strCurrencyCode, sintOrderStatusID ) WHERE ((sintMarketId=1) AND ( (sintOrderStatusId < 9) OR (sintOrderStatusId > 14))) 我正在尝试创建上面的索引,因为我对sintOrderStatusId IN(9-14)的任何情况都不感兴趣 当然,我可以创建一个视图或索引视图,但是我试图避免这种情况。 只需添加更多信息:sintOrderStatusId是smallint NOT NULL,并且可能的值范围是1到30。应避免使用9到14,因此要过滤索引。

2
SQL Server 2008:每天重启的序列
我必须添加一个触发器,该触发器应使用以下格式字符串更新列:<current_date>_<per_day_incremental_id>,例如2015-10-01_36。ID必须是递增的,并且允许有空格。 我的方法很幼稚:用当前日期和当前序列值创建一个表,并在其中保留一条记录: create table DailySequence ( date date, sequence int ) insert into DailySequence values (getdate(), 1); CREATE TRIGGER MakeHumanReadableId ON dbo.AuditMeasures FOR INSERT AS DECLARE @ret int; DECLARE @tempDate date; DECLARE @nowDate date; SET @nowDate = getdate(); SELECT @ret = t.sequence, @tempDate = t.date from DailySequence as t; IF …

2
使用数据库跟踪对象的锁定/解锁
我需要跟踪对象的锁定/解锁动作。在对对象(合同,合作伙伴等)执行任何操作之前,将lock发出一个事件。操作完成后,它将发出unlock事件。 我想获取那些已锁定但尚未解锁的对象。目的是使查询快速并避免死锁。 下表是 create table locks ( id int identity, name varchar(255), lock int ) insert into locks values('a', 1) insert into locks values('b', 1) insert into locks values('c', 1) insert into locks values('d', 1) insert into locks values('a', 0) insert into locks values('c', 0) insert into locks values('a', 1) …

2
使用哈希密码为应用程序角色编写脚本
我需要使用哈希密码编写应用程序角色脚本,以便将其从一个数据库复制到另一个数据库。 请考虑以下示例代码,该代码使用应用程序角色为非信任用户提供提升的访问权限: USE tempdb; CREATE LOGIN LimitedLogin WITH PASSWORD = 'Password1' , CHECK_POLICY = OFF , CHECK_EXPIRATION = OFF; CREATE USER LimitedLogin FOR LOGIN LimitedLogin WITH DEFAULT_SCHEMA = dbo; CREATE APPLICATION ROLE MyAppRole WITH PASSWORD = 'Password2' , DEFAULT_SCHEMA = dbo; EXEC sp_addrolemember @rolename = 'db_datareader' , @membername = 'MyAppRole'; …

4
从链接服务器获取@@ SERVERNAME
这似乎是一个基本问题,但我在那里找不到任何答案-我需要能够从链接服务器获取服务器名称/实例等。我尝试了几件事: select <linked server>.@@SERVERNAME; select <linked server>.SERVERPROPERTY('ServerName'); ...但是没有喜悦。有任何想法吗? 这是SQL 2008 R2&2014(2008R2是链接服务器) 编辑:错误是: 消息102,级别15,状态1,第2行'@@ SERVERNAME'附近的语法不正确。

2
Management Studio中已注册服务器的选项卡颜色
SSMS允许我们为每个连接使用自定义颜色。 有人知道此信息保存在哪里吗?我想保留颜色设置,但我会继续丢失它。 编辑 从对象资源管理器连接时,可以设置颜色。但是,这似乎与我在注册服务器中设置的颜色不同,并且我一直在迷失。(实际上,我处于漫游状态。) 我仅在执行多服务器操作时才使用注册服务器面板,并在打开该面板时尝试更加小心,因此这就是为什么我还希望能够使用与对象资源管理器关联的颜色的原因。 谢谢

3
托管SQL Server的VM上的专用资源
我的理解是,使用VM的最大好处之一就是可以在主机上的虚拟机之间共享资源。因此,您可以有一台具有120个CPU的主机,并在其上放置5个VM,每个VM具有32个CPU。额外的CPU在VM之间“共享”,主机根据需要动态分配CPU。内存相同。 我也了解到,这对于装有SQL Server的VM来说是一个很大的禁忌,但我的VM管理员对此表示不同意见。是否有人以任何一种方式获得任何证据或文件? 我不知道这是否重要,但我们正在使用VMWare。

2
列出SQL Server实例启动参数
我有一台刚刚重启的服务器,并使用以下命令验证了哪个跟踪标志处于活动状态DBCC TRACESTATUS: 跟踪标志:3688功能:删除错误日志中有关已启动和已停止跟踪的消息 在这里,您可以看到每个跟踪标志的作用。 旗3688 启动参数如下: 题: 如何通过T-SQL查找SQL Server服务的启动参数是什么?

1
提交和回滚只读事务是否存在性能差异?
我打开(可重复读取)事务(BEGIN TRAN),对某些记录进行一些处理。我要做的第一件事是检查我需要更改的数据是否在数据库中。在某些情况下,我会进行更改。但是在某些情况下,这无关紧要。在这种情况下,我要么COMMIT TRAN还是ROLLBACK TRAN和返回从存储过程。目前,尚未对数据进行任何更改,因此提交和回滚的效果是相同的。 我应该在提交和回滚之间选择任何考虑因素吗?有不同的性能成本吗?其他考虑因素?

3
在Windows 10上维护SQL Server 2008 R2
我必须在Windows 10上运行SQL Server 2008 R2,但不支持它,因此没有任何更新。不能安装更高版本的SQL Server。我可以在线找到所有Service Pack和累积更新。 问题: 有没有办法自动获取更新? 如果不是,则必须按顺序安装所有Service Pack,还是只能安装最新的Service Pack。

3
索引调整问题
我正在调整一些索引,看到一些问题想听取您的建议 在1个表上有3个索引 dbo.Address.IX_Address_ProfileId [1 KEY] ProfileId {int 4} Reads: 0 Writes:10,519 dbo.Address.IX_Address [2 KEYS] ProfileId {int 4}, InstanceId {int 4} Reads: 0 Writes:10,523 dbo.Address.IX_Address_profile_instance_addresstype [3 KEYS] ProfileId {int 4}, InstanceId {int 4}, AddressType {int 4} Reads: 149677 (53,247 seek) Writes:10,523 1-我真的需要前两个索引,还是应该删除它们? 2-正在运行的查询使用profileid = xxxx的使用条件,以及其他使用profileid = xxxx且InstanceID = xxxxxx的使用条件。为什么优化器选择第三索引而不是第一索引或第二索引? 我也正在运行一个查询,使每个索引上的Lock等待。如果我得到这些计数,应该怎么做才能调整该指数? Row …

2
为什么SQL Server Management Studio崩溃?
当我打开SSMS时,收到以下消息: SSMS-SQL Server Management Studio遇到问题,需要关闭。对此造成的不便,我们表示歉意。 我能做什么? 重新启动后问题仍然存在,并且我没有安装任何加载项。 这是在Windows XP上运行的SQL Server 2008 R2 SSMS。 SSMS之前在此计算机上运行没有错误。 不是仅从SQL Server程序包中安装SSMS。建议重新安装软件包吗?或者如何单独安装SSMS? 对于所有用户,都会发生相同的问题。

2
生成差异的最有效方法
我在SQL Server中有一张表,看起来像这样: Id |Version |Name |date |fieldA |fieldB ..|fieldZ 1 |1 |Foo |20120101|23 | ..|25334123 2 |2 |Foo |20120101|23 |NULL ..|NULL 3 |2 |Bar |20120303|24 |123......|NULL 4 |2 |Bee |20120303|34 |-34......|NULL 我正在研究要比较的存储过程,该过程需要输入数据和版本号。输入数据具有“名称”更新字段Z中的列。预期大多数字段列为NULL,即,每行通常仅具有前几个字段的数据,其余的均为NULL。名称,日期和版本对表构成唯一约束。 对于给定的版本,我需要针对该表比较输入的数据。每行都需要进行区分-通过名称,日期和版本来标识一行,并且字段列中任何值的任何更改都需要在差异中显示。 更新:所有字段都不必为十进制类型。其中一些可能是nvarchars。我希望diff在不转换类型的情况下发生,尽管diff输出可以将所有内容转换为nvarchar,因为它仅用于显示目的。 假设输入为以下,并且请求的版本为2: Name |date |fieldA |fieldB|..|fieldZ Foo |20120101|25 |NULL |.. |NULL Foo |20120102|26 |27 |.. |NULL Bar …

6
创建SQL Server性能基准监视
为了获得概述和可比较的数据,我当前的任务是创建性能基准,以获取有关不同生产SQL Server实例的一些数据。 我的想法是: 我想使用几个DMV 我想包括一个探查器跟踪(包括执行计划) 我想包含性能数据 因此,我试图实现的是一个可启动和可停止(也可调度)的常规性能监视,该监视将返回: 识别正在进行的性能优化任务是否成功所需的所有信息 几个汇总的简单图形,有助于形象化长期进展。用于管理;-) 探查器跟踪中的可重新执行执行计划,以比较单个队列的更改和索引优化任务的改进 我发现了一些描述性能基准创建的信息。它们中的大多数要么非常复杂,要么仅关注所需的性能指标之一(主要是性能数据)。 最匹配的示例/描述如下:为SQL Server创建性能基准 问题是: 有没有人有以快速可行的方式创建这种性能监视器的经验?

1
CPU利用率低但信号等待时间高
我有一台具有16个CPU的服务器,该服务器配置max degree of parallelism为8且max worker threads设置为零。 在给定的一个小时内,我的信号等待时间为20%,但在此期间我的OS CPU利用率从未超过25%。有人可以解释为什么我的信号等待如此之高吗? 我的供应商拥有同类最佳的评分系统,希望我们的信号等待率不超过10%,否则我们会感到不高兴。我该如何解决此问题(不添加其他CPU)? 每个NUMA节点我们的CPU不超过8个,因此跟踪标志8048不适用。 最大实例等待量是CXPACKET(70%),然后是PREEMPTIVE_OS_PIPEOPS(20%) cost threshold for parallelism设置为50。我应该提高它吗?要什么? 这是专用于SQL Server的物理计算机(不是VM)。 我正在使用监视工具来识别最频繁运行的查询和过程。我要查看较高的CPU,较高的I / O或较高的持续时间吗?通常,我们的应用程序是I / O密集型的,因此我会调整高I / O。但是,由于问题是信号等待,我是否需要查看较高的CPU? 我希望避免将Max Vernon的建议降低MAXDOP到4,因为该应用程序会执行一些需要额外线程的仓库样式查询。

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.