Questions tagged «sql-server-2012»

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


5
如何隐藏/禁用表而不删除表以检查冗余?
我必须维护和扩展一个旧的旧系统,其中包含不再使用的Web服务方法和数据库表。由于我不能完全确定这些表是否确实是多余的,因此恐怕会删除它们。 还有其他方法可以达到相同的效果(不能再使用表)而不删除它们吗?我的想法是将它们Deleted从当前的默认设置转移到其他模式(例如)dbo。 IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'Deleted') BEGIN EXEC('CREATE SCHEMA Deleted') END ALTER SCHEMA Deleted TRANSFER dbo.TableName; 架构方法是否还有其他选择或有任何缺点?



2
9990的“缓冲区高速缓存命中率”是什么意思?
我从博客文章中得到了这个查询: SELECT object_name, counter_name, cntr_value FROM sys.dm_os_performance_counters WHERE [object_name] LIKE '%Buffer Manager%' AND [counter_name] = 'Buffer cache hit ratio' 该帖子说,这将使我对缓存的命中率有所提高。似乎表明它将是0-100的值(结果显示为87)。 但是当我运行它时,我得到的数字很高。这是一个例子: object_name counter_name cntr_value SQLServer:Buffer Manager Buffer cache hit ratio 9990 这是否意味着99.90%? 如果没有,那是什么意思?我如何获得真正的价值? 注意:我得到的值低至257和高至352363 如果相关,则还有其他一些服务器统计信息: 网页预期寿命:145 页面每秒读取数:1,380,009,009

1
CONVERT()导致此问题的原因是什么?
考虑以下两个语句: PRINT CONVERT(NUMERIC(38, 0), 0x0100000001, 0); PRINT CONVERT(NUMERIC(38, 0), 0x0100010001, 0); 两条语句都返回-1; 那不是很错误,因为第二个二进制值比第一个值高十进制65,536,不是吗? 当然这不能归因于沉默的截断吗? 如果我运行以下语句: PRINT CONVERT(NUMERIC(38, 0), 0x00000001, 0); PRINT CONVERT(NUMERIC(38, 0), 0x00010001, 0); 出现以下错误: Msg 8114, Level 16, State 5, Line 1 Error converting data type varbinary to numeric. 我如何诊断这里发生了什么? 我正在SQL Server 2012 v11.0.5058上运行它。在SQL Server 2008 R2 SP2,SQL …

3
如何可靠地确定给定的SQL Server实例是否具有“内存中的锁定页”权限?
可以将“锁定页面在内存中”权限授予SQL Server使用的服务帐户。这使SQL Server可以防止将内存分页到磁盘。 我注意到我们的几台SQL Server计算机没有配置本地策略以允许对SQL Server使用的服务帐户拥有此权利。由于我们有大量的服务器,因此最好使用“本地系统策略”管理控制台手动检查每台服务器。 是否可以使用T-SQL查询,扩展存储过程或其他一些方法来确定所讨论的服务器是否正确? 我不想使用EXEC xp_readerrorlog 0, 1, 'lock memory privilege was not granted';它,因为它依赖于检查当前的SQL Server错误日志。并且该错误日志可能不包含相关条目,前提是自从上次重新启动服务器以来,该日志已被翻转。我知道我可以检查通过修改第一个参数旧日志0来1等,但我们只保留10个错误日志,这可能是不够的。我想要确认设置的故障保护方法。

1
大约50天后,SQL Server 2012页面预期寿命将重置为0
我注意到两台服务器HA群集上的行为异常,我希望有人可以证实我的怀疑,或者提供其他解释...这是我的设置: 2服务器SQL 2012 SP1安装 已为一些数据库启用SQL AlwaysOn HA CPU为2.4GHz,4核 RAM为34 GB(这是一个AWS实例,因此为奇数) 资源利用率相对较低-每个服务器有14 GB以上的可用内存,并且SQL没有限制要使用的内存量 磁盘访问时间很好-很少超过15ms /读或写 数据库不是很大-1 GB,1.5 GB,7.5 GB SQL Server进程正在使用16 GB专用字节,15 GB工作集 总体而言,没有发现资源问题。现在是奇怪的部分。SQL不会重新启动(进程已经运行了近6个月),但是似乎每隔50天,Page Life Expectancy计数器就会下降(几乎)为0。直到那一点为止,它稳步上升,没有下降。这是一个性能图: 当我查看计数器数据(我没有确切的数字,只是一个小时的汇总)时,似乎PLE计数器值每次(至少每次我有数据)都达到约4,295,000秒(约50天)。 我疯狂的理论是,PLE数字以毫秒为单位,以无符号长整数(上限为4,294,967,295)保存,并且在49.71天时会由于设计或错误而重置。这将解释两个服务器的行为以及它们具有的相同模式。或者可能是完全不同的东西,我只是没有任何意义。:) 有没有人看到过类似的东西,或者可以解释这种行为? PS我看到了这篇文章,但我的情况似乎略有不同。 PPS这是一个重新发布-我最初在此处发布,但被告知此处的观众更合适。 谢谢!

1
具有50个实例的SQL Server 2012 Standard服务器不会卸载实例
我怀疑这是一个问题,因为我们达到了SQL Server的50个实例的最大限制。自然,它不会安装更多实例。但是,似乎也不会卸载它们。更糟 在为实例选择SQL引擎之后单击下一步时,它将挂在“选择功能”对话框上。 我没有找到很多有关此的信息。最有趣的命中是:http : //social.msdn.microsoft.com/Forums/sqlserver/en-US/24a1e5f3-25f3-48c8-973a-4c6a18578e42/trying-to-uninstall-1-of-50-sql -server-2008-r2-express-hangs-on-please-wait 它还建议使用setup.exe一些参数来卸载实例,但是如果不启动GUI并进入失败的常规卸载,我将无法做到这一点。 高程无济于事。重新启动没有帮助。日志只说“被用户取消”,因为最后我必须将其杀死。在此之前,没有什么显而易见的。验证全部为绿色。 安装程序说它是SQL Server 2012 SP1-所有实例都位于11.0.2100。 我选择回答/关闭自己的问题,因为Microsoft已关闭故障单,其状态为“无法修复”。 希望他们会为SQL Server 2014修复此问题,但是我没有也不打算进行自我测试,也没有提供有关关闭票证的任何其他评论。

2
SSIS 2012创建环境变量失败
我正在使用脚本将环境从一台服务器移植到另一台服务器。我遇到一个问题调用,catalog.create_environment_variable其中出现错误“输入值的数据类型与'String'的数据类型不兼容”。从过程“ check_data_type_value”出来。 奇怪的是,如果我让GUI脚本输出变量,该查询将起作用 DECLARE @var sql_variant = N'\\myserver\ssisdata' EXEC [catalog].[create_environment_variable] @variable_name = N'FolderBase' , @sensitive = False , @description = N'' , @environment_name = N'Development' , @folder_name = N'POC' , @value = @var , @data_type = N'String' GO 但是,采用这种脚本方法无效。我所做的工作表明,通常通过使用nvarchar数据类型而不是varchar解决此错误消息。但是,事实并非如此。 以下脚本的第108行。我的假设是sql_variant有点奇怪,但是我不知道那是什么。 USE SSISDB; GO DECLARE @folder_id bigint , @folder_name nvarchar(128) = …

2
SQL Server数据库设计用于“已存档但可用”的数据
我们有一个打算“缩小”的大型数据库(> 1TB)。数据库围绕一个主要实体,我们称其为“访问”。为了讨论起见,假设它是医学实践的数据库。 总共有30种访问“类型”,例如程序,年度,随访,免疫等,每种类型都是“访问”的辅助表,例如“ visit_immuno”。 自2000年以来,该数据库已积累了大约12年的数据。有人建议我们在“实时”版本中保留大约3年的数据,而其余数据则保留在“ old_data”数据库中。由于日期已标准化,因此仅存储在“访问”表中。Visit表还包含一个ROWVERSION列和一个BIGINT伪身份(聚集)列。出于所有目的和目的,假设群集密钥由SEQUENCE(SQL Server 2012 Enterprise)填充-我们将其命名为cid。 在visit.date当医生的推移延长探视,并与他的数据的“公文包”的回报并不总是以相同的顺序作为聚集键,例如,它被合并到主表。“访问”表也进行了一些更新,这将导致该ROWVERSION列与cid和date列不同步-简单地说,由于这个原因,它们都ROWVERSION不会cid创建合适的分区键。 从“活动”中删除数据的业务规则是,visit.date必须大于36个月并且visit_payment必须存在子记录。另外,“ OLD_DATA”数据库不包含任何基本表visit%。 因此,我们最终得到: 直播DB(日常使用) -所有表老数据DB -对于较旧的数据visit%表 该提案要求使用组合DB,该组合DB是一个外壳,其中包含(除外)中所有基本表的同义词以及两个数据库中所有表的UNION ALL的视图。Live DBvisit%visit% 假设在Old-Data数据库中创建了相同的索引,查询在UNION-ALL 视图上的性能是否良好?哪种类型的查询模式可能会使UNION-ALL 视图的执行计划失败?

1
将SQL Server 2005升级到SQL Server 2012
我有一个以下测试环境: 虚拟机(Hyper-V) Windows Server 2008 R2 SP1(x64位) Windows SQL Server 2005 Developer Edition SP4(x64位)(默认实例名称) 设置了1个具有合并复制的数据库... 3个发布,每个都有2个订阅者。 我们正在测试升级到SQL Server 2012 Developer Edition(sp1)的过程。 我已经下载了64位SQL Server 2012 Dev的iso。(sp1)来自MSDN(完整许可副本),并且已开始沿升级路径进行。在开始检查不同条件的最后阶段之一中,我们遇到了一个奇怪的问题,如下所述: Rule "Upgrade architecture mismatch" failed. The CPU architectures of upgrading feature(s) are different. To upgrade these features, Setup architecture must be the same as the …



5
如何限制一个人一次可以运行的SQL存储过程?
我有一个存储过程,基本上从一个表中选择值,然后将它们插入到另一个表中,这是一种归档。我想避免多个人同时执行此操作。 在运行此过程时,我不希望其他任何人都可以启动该过程,但是我不希望序列化,而在完成后,其他人可以运行该过程。 我想要的是给其他尝试启动该程序的人,同时我正在运行该程序。 我已经尝试过使用sp_getapplock,但是我无法完全阻止该人运行该过程。 我还尝试使用sys.dm_exec_requests查找该过程并阻止该过程,尽管这确实可行,但我认为它不是最佳选择,因为在某些服务器上我没有运行sys.dm_exec_sql_text(sql_handle)的权限。 我这样做的最佳方法是什么?

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.