Questions tagged «sql-server-2016»

SQL Server 2016(主要版本13.00.xxxx)。还请标记sql-server。

1
COALESCE现在可燃了吗?
我的一位开发人员争辩说COALESCE(column, default value) = default value现在可以精打细算了。那正确吗? 我进行了以下测试,并认为这暗示着COALESCE不可持久。 USE tempdb; SELECT @@VERSION; -- Microsoft SQL Server 2016 (RTM-CU3-GDR) (KB3194717) - 13.0.2186.6 (X64) Oct 31 2016 18:27:32 Copyright (c) Microsoft Corporation Developer Edition (64-bit) on Windows 10 Pro 6.3 <X64> (Build 14393: ) (Hypervisor) CREATE TABLE Test ( ID int primary key …

3
创建数据库级别的常量(枚举)而不使用CLR?
我有几个SQL对象,它们需要根据请求的期望状态采取其他操作。有没有一种方法可以创建数据库级别的常量(枚举),这些常量可以传递给存储过程,表值函数并可以在查询中使用(不使用CLR)? CREATE PROCEDURE dbo.DoSomeWork(@param1 INTEGER, ..., @EnumValue myEnumType) AS ...; 然后使用它: EXEC doSomeWork 85, ..., (myEnumType.EnumValue1 + myEnumType.EnumValue2); 哪里myEnumType将保留一些枚举值。 在该过程中,我将能够使用@EnumValue它并针对其中的值进行测试myEnumType以完成所需的工作。我将myEnumType考虑的情况下使用位掩码的值。 举一个简单的例子,考虑一个昂贵的过程,该过程需要一个庞大的数据集并将其缩减为较小但仍然非常大的数据集。在此过程中,您需要在过程的中间进行一些调整,以免影响结果。说这是基于归约内中间计算的某些状态来过滤(或针对)某些类型的记录。该@EnumValue类型的myEnumType可以用来测试此 SELECT ... FROM ... WHERE (@EnumValue & myEnumType.EnumValue1 = myEnumType.EnumValue1 AND ...) OR (@EnumValue & myEnumType.EnumValue2 = myEnumType.EnumValue2 AND ...) OR ... 在不使用CLR的情况下,SQL Server中是否可能存在这类数据库级别的常量? 我正在寻找数据库级别的枚举或常量集,这些枚举或常量集可以作为参数传递给存储过程,函数等。

3
将数据从SQL Server 2005迁移到2016
我是管理SQL Server的新手,但是我对SQL语言和制作SSIS包感到满意。 我想将数据从SQL Server 2005迁移到2016。 我的问题是我是否需要担心系统数据库和其他对象,例如索引,存储过程,视图,安全性和权限。登录,或者我可以只迁移数据。 在这种情况下,建议使用此程序。

4
database_scoped_configurations中的错误
我正在尝试从以下位置插入结果集: SELECT * FROM sys.database_scoped_configurations 到临时表中,因为我想检查服务器上所有数据库的设置。所以我写了这段代码: DROP TABLE IF EXISTS #h CREATE TABLE #h(dbname sysname, configuration_id INT, name sysname, value SQL_VARIANT, value_for_secondary SQL_VARIANT) EXEC sys.sp_MSforeachdb 'USE ?; insert into #h(dbname, configuration_id, name, value,value_for_secondary) SELECT ''?'' as dbname, * FROM sys.database_scoped_configurations D' SELECT * FROM #h H 但随后将只有每个数据库一行,而不是4行,我从在每个数据库中运行一个普通的选择期待。 我知道有比使用sp_MSForEachDB更好的编码方法,我尝试了几种方法。但是我仍然每个数据库只获得一行。我已经在SQL Server 2016 …

2
安装后配置管理器中缺少“ SQL Server网络配置”节点
我有一台运行Windows 2012 R2 Datacenter 64位的服务器。我使用的是SQL 2016 RC3,没有问题,我想将其替换为MSDN上的RTM版本。 卸载RC3,然后安装RTM之后,我无法远程连接到服务器。经过检查,我发现在Configuration Manager中没有“ SQL Server网络配置”的节点。列出了32位版本,并启用了TCP / IP。如何安装此丢失的节点? 我已启动SQL Browser服务,并尝试修复2016安装。似乎没有什么能使这个缺失的成分复活。 我发现有趣的是,有些RC3和RTM安装遗留下来的无法卸载。我不确定这是否相关。我按照Microsoft有关卸载SQL Server的说明进行操作,所以我觉得我做对了所有事情。


2
SQL Server:是否涵盖所有列的索引?
我们的团队继承了一个应用程序和关联的数据库。以前的开发人员似乎执行了一个规则,即每个表上的每个索引都有一个INCLUDE子句,以始终添加不属于键一部分的每个列。这些表平均具有2到5个索引或唯一约束以及外键。 目的是不管在数据库上引发什么查询,都是为了提高SELECT性能,因为访问是通过默认(但并非总是)检索所有列的ORM进行的。我们希望这样做的副作用是增加了存储需求(可能如此),并且增加了INSERT / UPDATE / DELETE的开销时间。 问题是,这是明智的策略吗?我们的团队具有SQL Server的历史,但是没有成员会认为自己是其内部行为的专家(尽管已经提出了一个问题,即如果该策略是最佳策略,那么现在是否将其作为默认策略?)。我们还应该期待其他哪些副作用(数据库服务器CPU /内存/ TempDB的使用情况等),或者上述某些假设是否正确? 此外,该应用程序既可以安装到SQL Server内部部署(自2012年以来的版本)中,也可以安装到Azure SQL中-如果我们为两者之间的任何差异或Azure的其他副作用做好了准备,方法?

1
SQL Server查询存储是否捕获参数值?
SQL Server 2016中引入的新查询存储很棒。它是我以前使用较旧的Profiler工具所做的大部分工作的理想替代品。但是,我还没有找到一种方法来捕获与嗅探到的高资源消耗查询的各个调用相关的参数值。这可能吗? 我知道查询存储处理的是聚合数据而不是单个调用,因此我怀疑我在这里可能不走运。当我发现一个慢查询时,我发现它很方便进行故障排除,使其参数也与其最慢的调用之一相关联。我想知道如何使用最新最好的工具来执行此操作。(我不会错过使用Profiler!) 从安全角度来看,查询存储的锁定程度是否低于Profiler?我认为它需要从某个级别的单个调用中捕获数据才能计算聚合。只是不确定是否存储了其中的任何一个。

1
使用的数据库镜像协议TCP端口。一种默认,一种动态?
在SQL Server Always On可用性组™的主/辅助副本上执行以下查询时 SELECT DISTINCT local_tcp_port,protocol_type,num_reads,num_writes FROM sys.dm_exec_connections WHERE local_net_address is not null; 显示两个用于数据库镜像协议的本地tcp端口,5022&63420 Server Name local_tcp_port protocol_type num_reads num_writes ServerName 5022 Database Mirroring 102942598 5 ServerName 63420 Database Mirroring 5 89655349 该5022端口是预期的,因为它是配置为镜像端点的端口。 另一个似乎是一个动态端口,为什么使用这个端口? 它可能与以下事实有关:一个显示大量的读取(5022),而另一个显示大量的写入(63420)。 内部版本:13.0.5264.1

3
在数据库表中使用SPID(而不是表变量)
用于预订事物的交易数据库... 我们的供应商被要求用@tablevariables替换#temptables(由于繁重的编译锁),但他们替换为一个实际表,该表将SPID作为列添加,以确保存储过程仅作用于适用的行。 您认为这种操作方法有任何风险吗?在所有事务都隔离在它们自己的事务中之前,我担心我们最终可能会将该表锁定一堆,但他们的意见是SQL使用行级锁定并且不会创建更多的锁。 SQL Server版本:2016 Enterprise-13.0.5216.0 CREATE TABLE dbo.qryTransactions ( ID int IDENTITY (0,1) NOT NULL CONSTRAINT pk_qryTransactions PRIMARY KEY CLUSTERED, spid int NOT NULL, OrderID int, ItemID int, TimeTransactionStart datetime, TimeTransactionEnd datetime, ...other fields ) CREATE INDEX idx_qryTransactions_spidID ON qryTransactions (spid, ID) INCLUDE (ItemID, OrderID, TimeTransactionStart, TimeTransactionEnd)

1
删除自动创建的NT AUTHORITY和NT SERVICE帐户
因此,我最近转移了工作-下面是我在新SQL Server安装的构建脚本中发现的一段代码。 IF EXISTS ( SELECT * FROM [sys].[syslogins] WHERE [name] = N'NT AUTHORITY\SYSTEM' ) BEGIN DROP LOGIN [NT AUTHORITY\SYSTEM]; END IF EXISTS ( SELECT * FROM [sys].[syslogins] WHERE [name] = N'NT SERVICE\SQLWriter' ) BEGIN DROP LOGIN [NT SERVICE\SQLWriter]; END IF EXISTS ( SELECT * FROM [sys].[syslogins] WHERE [name] = …

4
在SQL Server 2016中最大化可移植性的最佳实践
在开发解决方案原型时,通常尚未决定技术,并且可能与最终产品中使用的技术不同。 在这种情况下,我倾向于使用Microsoft SQL Server以尽可能标准的方式编写查询,以简化最终迁移到另一台服务器的过程。 有没有一种方法或某种已知的实践可以直接在SQL Server中或通过SQL Server Management Studio(SSMS)通过T-SQL方言强制使用标准SQL ?

1
由查询存储引起的阻塞。无法清除或禁用
我最近将2016 SQL Server更新为SP2,并于2018年8月发布了最新的CU(KB4458621)。就在最后一天左右,我注意到我正在进行一些阻止。我无法杀死SPID b / c,这不是用户进程。根据SP_WHO2,命令为“查询存储ASYN”。我尝试通过Script和UI清除数据并禁用查询存储。似乎没有任何效果,它只是旋转然后开始引起更多阻塞。还有其他人遇到这个问题吗?谁能帮我弄清楚如何成功禁用查询存储吗?SP_WhoIsActive @show_System_SPIDS =以下1个结果(仅查询存储结果) 更新-这现在导致TempDB驱动器填满。尝试在几个小时后重新启动,看看是否可以解决问题。会及时向大家发布。 谢谢,内特

2
从SSMS时间表中选择TOP N行丢失
我在数据库中使用时态表,当我在Management Studio 2017(v17.4 14.0.17213.0)中右键单击表时,在上下文菜单中没有看到`` 选择前1000行''(非时态表没有问题) ) 有什么想法如何找回此上下文菜单吗?我感觉这与我正在运行的SQL Server版本有关(SQL 13.1.4001.0 Express Edition)

4
在查询中的多个列上调用同一个表值函数的最有效方法
我正在尝试优化一个查询,其中在20列上调用了相同的表值函数(TVF)。 我所做的第一件事是将标量函数转换为内联表值函数。 是否使用CROSS APPLY最佳执行方式对查询中的多个列执行相同的功能? 一个简单的例子: SELECT Col1 = A.val ,Col2 = B.val ,Col3 = C.val --do the same for other 17 columns ,Col21 ,Col22 ,Col23 FROM t CROSS APPLY dbo.function1(Col1) A CROSS APPLY dbo.function1(Col2) B CROSS APPLY dbo.function1(Col3) C --do the same for other 17 columns 有更好的选择吗? 可以在针对X个列的多个查询中调用同一函数。 功能如下: CREATE …

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.