Questions tagged «sql-server-2012»

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

1
角色db_owner允许什么
我一直在尝试解决无法查看SQL Server 2012数据库中某些表的登录名。这样做时,我发现我不太了解db_owner角色允许的成员身份。我可以理解其他角色,例如,db_datareader and db_datawriter但是我对db_owner允许的角色仍然感到困惑。

3
在SQL Server中安全地生成UNIQUEIDENTIFIER
我打算将a UNIQUEIDENTIFIER作为访问密钥,用户可以用来访问某些数据。在这种意义上,密钥将充当密码。 我需要在INSERT...SELECT语句中生成多个这样的标识符。出于架构原因,在这种情况下,我想在服务器端生成标识符。 如何生成安全随机的UNIQUEIDENTIFIER?注意,这NEWID不会足够随机,因为它根本不保证任何安全属性。我正在寻找与System.Security.Cryptography.RandomNumberGenerator等效的SQL Server,因为我需要不可猜测的ID。基于的任何内容CHECKSUM,RAND或GETUTCDATE也不符合条件的内容。

1
如何在SQL Server 2012中转移dbo架构的所有权
我不小心给了用户db_owner模式的所有权(使用下面的UI中的复选框),现在我不能: 将所有权转让给另一个用户 从数据库中删除用户(尽管我可以在SQL Server中删除登录名) 我尝试了数据库主体在数据库中拥有一个架构,无法删除。 ALTER AUTHORIZATION ON SCHEMA::db_owner TO dbo 尽管成功完成了该操作,但用户仍然拥有所有权,并且该控件显示为灰色,因此我似乎也无法在用户界面中进行操作。 找到一个解决方案: 除了Arron的答案外,我还意识到我会在错误的DB(facepalm!)中运行以上命令。一旦纠正了数据库,上面的SQL和下面的答案都将起作用。

2
SQL Server 2016 vs 2012插入性能
我在同一台服务器上有两个SQL Server实例: Microsoft SQL Server 2012(SP1)-11.0.3000.0(X64)标准版(64位) Microsoft SQL Server 2016(SP1-CU5)(KB4040714)-13.0.4451.0(X64)企业版(64位) 两个实例上的sp_configure结果相同(新的2016选项除外)。 我已经在同一磁盘文件夹上的两个实例上创建了新数据库。自动增长参数是相同的。 自动创建和自动更新统计信息选项已关闭。 然后,我对堆中的10000个插入进行了测试: set nocount on go create table dbo.TestInsert ( i int not null, s varchar(50) not null ) declare @d1 datetime, @d2 datetime, @i int set @d1 = getdate() set @i = 1 while @i <= 10000 …

2
搜索FILESTREAM内部信息
在Microsoft SQL Server 2012上激活FILESTREAM功能后,SQL Server将在系统上创建“隐藏”共享。份额定义如下: Sharename FILESTREAM_SHARE Path \\?\GLOBALROOT\Device\RsFx0320\<localmachine>\FILESTREAM_SHARE Remark SQL Server FILESTREAM share Maximum users unlimited Users Caching Manual caching of documents Permissions NT-AUTHORITY\Authenticated Users, FULL 该名称是您最初在SQL Server配置管理器中配置FILESTREAM时提供的共享的名称。但是,这是为了什么呢? 至今 我从以下位置开始阅读了所有可用的FILESTREAM文档: 文件流(SQL Server) 启用和配置FILESTREAM 创建一个启用了FILESTREAM的数据库 创建用于存储FILESTREAM数据的表 ...以及所有相关的 FILESTREAM与其他SQL Server功能的兼容性 FILESTREAM DDL,函数,存储过程和视图 使用OpenSqlFilestream访问FILESTREAM数据 论文SQL Server 2008-SQL Server 2008中的文件流存储 以及FILESTREAM(OLTP)---设计关键任务OLTP解决方案的技术参考指南,其中引用了许多其他材料 ...但是没有提及份额,份额或用途。您输入名称,SQL Server将在后台创建共享。 …

2
对于某些特殊字符,ISNUMERIC背后的逻辑是什么?
该ISNUMERIC函数具有某些意外行为。MSDN文档说: ISNUMERIC当输入表达式的计算结果为有效的数值数据类型时,返回1;否则返回0。有效的数字数据类型包括以下类型:int,bigint,smallint,tinyint,十进制,数字,money,smallmoney,float,real。 它也有一个脚注: ISNUMERIC对于非数字字符(例如加号(+),减号(-))和有效的货币符号(例如美元符号($)),返回1。有关货币符号的完整列表,请参见money和s​​mallmoney(Transact-SQL)。 好的,因此+,-和列出的货币符号应被视为数字。到目前为止,一切都很好。 现在是奇怪的部分。首先,链接文章中的某些货币符号不是数字,包括: 欧元货币符号,十六进制20A0: ₠ 奈拉符号,十六进制20A6: ₦ 里亚尔符号,十六进制FDFC: ﷼ 这很奇怪,我似乎找不到原因?此版本或环境相关吗? 但是,事情变得奇怪了。这里有一些我无法解释的内容: /不是数字,而是\(呵呵!) REPLICATE(N'9', 308)是数字,但REPLICATE(N'9', 309)不是 第一个也是最基本的问题是:什么能解释上述情况?但更重要的是:背后的逻辑是什么ISNUMERIC,以便我自己解释/预测所有情况? 这是重现事物的好方法: DECLARE @tbl TABLE(txt NVARCHAR(1000)); INSERT INTO @tbl (txt) VALUES (N''), (N' '), (N'€'), (N'$'), (N'$$'), (NCHAR(8356)), (NCHAR(8352)), (NCHAR(8358)), (NCHAR(65020)), (N'+'), (N'-'), (N'/'), (N'\'), (N'_'), (N'e'), (N'1e'), (N'e1'), (N'1e1'), (N'1'), (N'-1'), …

1
为什么在SQL Server 2012中使用托管服务帐户而不是虚拟帐户?
在SQL Server 2012中,服务帐户创建为虚拟账户(VAS),如所描述这里,而不是托管服务帐户(MSAS)。 根据说明,我可以看到这些重要的区别: MSA是域帐户,VA是本地帐户 MSA使用AD处理的自动密码管理,VA没有密码 在Kerberos上下文中,MSA自动注册SPN,而VA不注册 还有其他区别吗?如果不使用Kerberos,为什么DBA会更喜欢MSA? 更新:另一个用户已经注意到MS文档中有关VA的可能矛盾: 虚拟帐户是自动管理的,并且虚拟帐户可以在域环境中访问网络。 与 虚拟帐户无法通过身份验证到远程位置。所有虚拟帐户均使用计算机帐户的权限。以格式设置机器帐户 <domain_name>\<computer_name>$。 什么是“机器帐户”?如何/何时/为什么获得“预配”?“在域环境中访问网络”和“在域环境中认证到远程位置”之间有什么区别?

1
运行总计到上一行
我需要有关开窗功能的帮助。我知道您可以计算一个窗口内的总和以及一个窗口内的运行总额。但是是否可以计算先前的运行总计,即运行总计不包括当前行? 我认为您将需要使用ROWor RANGE参数。我知道有一个CURRENT ROW选项,但我需要CURRENT ROW - 1,这是无效的语法。我对ROW和RANGE参数的了解有限,因此将非常感谢您的帮助。 我知道有这个问题的许多解决方案,但我看明白了ROW,RANGE争论,我以为这个问题可以用这些被破解。我提供了一种可能的方法来计算以前的总运行量,但我想知道是否有更好的方法: USE AdventureWorks2012 SELECT s.SalesOrderID , s.SalesOrderDetailID , s.OrderQty , SUM(s.OrderQty) OVER (PARTITION BY SalesOrderID) AS RunningTotal , SUM(s.OrderQty) OVER (PARTITION BY SalesOrderID ORDER BY SalesOrderDetailID) - s.OrderQty AS PreviousRunningTotal -- Sudo code - I know this does not work --, SUM(s.OrderQty) OVER …

1
对SOS_SCHEDULER_YIELD等待进行故障排除
在运行我们的企业ERP(Dynamics AX 2012)时,我注意到我们的生产环境似乎比我们的开发系统慢得多。 在运行跟踪的同时在开发和生产环境中执行相同的活动后,我确认与开发相比,SQL查询在我们的生产环境中执行得非常慢(平均慢10到50倍)。 最初,我将其归因于负载,并在下班时间在生产环境上重新运行了相同的活动,并在跟踪中找到了相同的结果。 我在SQL Server中清除了等待统计信息,然后让服务器在其正常生产负载下运行了一段时间,然后运行了以下查询: WITH [Waits] AS (SELECT [wait_type], [wait_time_ms] / 1000.0 AS [WaitS], ([wait_time_ms] - [signal_wait_time_ms]) / 1000.0 AS [ResourceS], [signal_wait_time_ms] / 1000.0 AS [SignalS], [waiting_tasks_count] AS [WaitCount], 100.0 * [wait_time_ms] / SUM ([wait_time_ms]) OVER() AS [Percentage], ROW_NUMBER() OVER(ORDER BY [wait_time_ms] DESC) AS [RowNum] FROM sys.dm_os_wait_stats …

1
强制索引假脱机
我知道出于性能原因应避免使用它,但是我正在尝试展示一种情况,以使其演示如何确保不出现。 但是,我最后遇到了索引丢失警告,但是优化器选择不创建临时索引。 我正在使用的查询是 SELECT z.a FROM dbo.t5 AS z WITH(INDEX(0)) WHERE EXISTS ( SELECT y.a FROM dbo.t4 AS y WHERE y.a = z.a ) OPTION (MAXDOP 1); 表模式为: CREATE TABLE dbo.t4 ( a integer NULL, b varchar(1000) NULL, p varchar(100) NULL ); CREATE TABLE dbo.t5 ( a integer NULL, b …


3
分页时SQL Server查询变慢
我在SQL Server 2012中看到以下T-SQL查询的某些奇怪行为: SELECT Id FROM dbo.Person WHERE CONTAINS(Name, '"John" AND "Smith"') ORDER BY Name 仅执行此查询即可在不到两秒钟的时间内获得约1,300个结果(上有全文索引Name) 但是,当我将查询更改为此: SELECT Id FROM dbo.Person WHERE CONTAINS(Name, '"John" AND "Smith"') ORDER BY Name OFFSET 0 rows FETCH NEXT 10 ROWS ONLY 给我10个结果需要20秒钟以上。 以下查询甚至更糟: SELECT Id FROM ( SELECT ROW_NUMBER() OVER (ORDER BY Name) AS …

1
比较SQL Server 2012中的两个查询
我正在比较SQL Server 2012中的两个查询。目标是在选择最佳查询时使用查询优化器中所有可用的相关信息。这两个查询产生相同的结果。所有客户的最大订单编号。 在使用FREEPROCCACHE和DROPCLEANBUFFERS执行每个查询之前,已清除缓冲池 使用下面提供的信息,哪个查询是更好的选择? -- Query 1 - return the maximum order id for a customer SELECT orderid, custid FROM Sales.Orders AS O1 WHERE orderid = (SELECT MAX(O2.orderid) FROM Sales.Orders AS O2 WHERE O2.custid = O1.custid); -- Query 2 - return the maximum order id for a customer SELECT …


1
将主键移到文件组(SQL Server 2012)
如何将群集的主键移动到新文件组?我已经找到了可能的“算法”,但是效率很低: 删除非集群索引(要求对它们进行重新排序和重建) 删除聚簇索引(要求使用整个表) 创建新的主键约束(巨大的排序操作) 创建所有非聚集索引(需要排序和写入) 有没有更有效的方法?这是非常低效的,并且由于弱服务器上的表大小为50GB,将花费很长时间。 是否没有办法跳过所有这些,只对新文件组进行重建?那将不需要任何数据排序。

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.