Questions tagged «sql-server»

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

1
内存优化的DLL不会被删除
从BOL,我的理解是DBA不需要管理为内存优化表或本机编译的存储过程创建的DLL,因为它们在SQL Server服务启动时会自动重新编译,而在不再需要时会被删除。但是我正在见证,即使在删除内存优化表并重新启动服务之后,这些DLL仍然存在于文件系统中,并且仍会加载到SQL内存中并附加到进程中。这可以通过以下事实证明:它们仍然在sys_dm_os_loaded_modules中可见,并且如果您尝试在运行SQL Service的同时将其删除,则它们将锁定在文件系统中。 这是一个错误吗?还是稍后再清理?如果以后没有启动实例,那么是什么触发清除工作?

1
跟踪标志1222不起作用?
我有一个客户站点,其中有两个配置类似的2008r2 SQL Server“ A”和“ C”。在两台服务器上,启用了跟踪标志1204和1222,并DBCC tracestatus在两台服务器上显示以下内容: TraceFlag Status Global Session 1204 1 1 0 1222 1 1 0 3605 1 1 0 在A上,跟踪标志按预期工作,当发生死锁时,我们在错误日志中同时获取1204和1222死锁报告。但是,在C上,仅显示1204报告,而我们从未获得1222报告。 对于我的一生,我看不出有什么区别。我已经在Google上进行了广泛的搜索,并阅读(并重新阅读了)这些跟踪标志上的MS文档,但找不到任何此类行为的报告,也没有任何提示可能导致这种情况的提示。唯一接近的是偶尔声称没有跟踪标记起作用的情况,但是事实证明,如果它们在启用命令中有错别字。我知道这里不是这种情况,因为我已经使用DBCC TRACESTATUS进行了确认。 因此,对于可能导致仅跟踪标记1222不工作和/或如何修复跟踪标记的任何见解,将不胜感激。 好吧,这是一个有趣的发展。每当我自己生成一个死锁(使用此代码:https : //stackoverflow.com/questions/7813321/how-to-deliberately-cause-a-deadlock)时,我都会在错误日志中获得两个跟踪报告。从应用程序开始每两天就会发生“自然”死锁,似乎只触发其中一个死锁报告。不确定是否有帮助,是否有任何理由相信跟踪1222不会报告与1204相同的所有死锁条件?

1
从SQL Server获取时区键名的最佳方法
以下是我拼凑而成的内容,但我想看看还有哪些其他可用的方法。 SET NOCOUNT ON; GO DECLARE @tz VARCHAR(50) EXEC [master].[dbo].[xp_regread] 'HKEY_LOCAL_MACHINE' ,'SYSTEM\CurrentControlSet\Control\TimeZoneInformation' ,'TimeZoneKeyName' ,@tz OUT; SELECT GETDATE() ,'(' + LEFT(PARSENAME(REPLACE(@tz, ' ','.'),3),1) + '' + LEFT(PARSENAME(REPLACE(@tz, ' ','.'),2),1) + '' + LEFT(PARSENAME(REPLACE(@tz, ' ','.'),1),1) +')' 输出:2014-10-14 16:22:21.037(CST)

3
持续收到消息:分配页面失败:FAIL_PAGE_ALLOCATION 540
在以下方面,我将不胜感激,我做了一些谷歌搜索,但是还没有解决这个问题。 我在SQL日志“分配页面失败:FAIL_PAGE_ALLOCATION 540”中始终收到一条消息,然后是转储,我将其添加到此问题的末尾。 供您参考,构建为: 在vCenter上运行的虚拟服务器 Windows Server 2008 R2 64位SQL Server 2012 SP1 Enterprise(11.0.2100)8GB RAM SQL Server最大和最小内存设置为6144 MB 该服务器是2节点可用性组的一部分,这是当前的主节点。 该实例托管Microsoft SharePoint的数据库 我运行了一个Perfmon跟踪24小时,该跟踪仅显示PLE在一次转储之后下降,然后又上升。没什么特别奇怪的。 SQL Server仍在运行。 从SQL日志中提取: 10/03/2014 09:59:52,spid866,Unknown,CACHESTORE_XMLDBELEMENT (node 0) KB<nl/>---------------------------------------- ----------<nl/>VM Reserved 0<nl/>VM Committed 0<nl/>Locked Pages Allocated 0<nl/>SM Reserved 0<nl/>SM Committed 0<nl/>Pages Allocated 8 10/03/2014 09:59:52,spid866,Unknown,CACHESTORE_XMLDBTYPE (node 0) KB<nl/>---------------------------------------- ----------<nl/>VM …

2
SQL Server 2014 Standard Edition试用版可以升级为完整的Core许可证吗?
如果我安装了SQL Server 2014 Standard Trial版副本,此版本之后是否可以升级到该版本(无需完全重新安装)到完整版本(核心许可证)?我很想在等待许可的同时安装和配置这些东西,但是如果不容易获得许可,我不想让自己感到悲伤。 编辑:更多信息,对于发现此问题的其他任何人- 下载评估版时,Microsoft网站未指定“ SQL Server 2014”以外的任何内容。但是由于他们不允许您选择特定的版本,我认为Shanky的评论是正确的(这是企业版)。 正如Thomas所指出的,这是SQL Server 2014 Evaluation Enterprise的升级路径(由于Microsoft喜欢移动/杀死链接): SQL Server 2014评估企业版2 SQL Server 2014 Enterprise(服务器+ CAL或Core许可) SQL Server 2014商业智能 SQL Server 2014标准版 SQL Server 2014开发人员SQL Server 2014 对于独立安装,支持从Evaluation Enterprise(免费版)到任何付费版本的Web升级,但对于群集安装,则不支持。

2
如何在Sql Server 2008中调度作业少于10秒?
我想每3秒运行一次作业,但是在SQL Server 2008中,我们不能将间隔定义为少于10秒。 该作业用于将访问者信息以及细分信息插入/更新到Google搜索所跟踪的数据库中。 2到3秒钟内最多插入约100行。该作业将插入并更新数据库中的表。有什么方法可以使用sp作业计划配置进行计划吗?


2
将Unicode转换为非Unicode /将NVARCHAR转换为VARCHAR时自动翻译
Unicode代码点9619是一个称为“深色阴影”的字符:▓(http://unicode-table.com/en/search/?q=9619)。 使用SQL_Latin1_General_CP1_CI_AS归类和1252代码页,我希望将Unicode字符转换/转换为非Unicode数据类型将导致出现问号(?),因为代码页1252似乎不包含此字符,并且这似乎是SQL Server的无法进行转换时的行为。 所以我的问题是:为什么SQL Server将此字符转换为ASCII代码166,即“管道,竖线损坏”:¦? SELECT NCHAR(9619), CAST(NCHAR(9619) AS CHAR(1)), ASCII(CAST(NCHAR(9619) AS CHAR(1)))

3
插入多于特定数量的行时,INSERT需要5个小时以上
当向表中插入少于1,350,000行的数据时,整个过程大约需要2分钟,但是,如果插入的行数较大,则插入数据所需的时间将增加到大约5小时。 该问题与查询或索引无关,因为很长一段时间以来一切正常,并且查询,表或索引的结构没有任何变化。 问题大约在2周前首次出现,并且在插入的行数大于+ -1,350,000的情况下在几天内反复出现。例如,一天中插入的行数为1,200,000,过程需要2分钟,另一天,行插入的数为1,450,000,插入数据需要5-6个小时。 我试图重建索引,但没有帮助。

1
结合全文本和标量索引
假设我们有一个1200万个名称和地址的数据库,这些数据库需要使用全文本进行搜索,但是每行也包含一个整数值,例如COMPANYID。该表在这1200万行中包含约250个不同的COMPANYID。 定义全文索引时,是否可以COMPANY在树中赋予每个索引自己的“分支”?

3
如何对Microsoft SQL Server进行基准测试
在我的公司中,我们有多个托管SQL Server 2008 R2的虚拟机,其中一些虚拟机的性能与其他虚拟机不同,一些是由于Vmware主机非常繁忙,有些是由于与NAS的连接速度较慢。 有没有一种方法可以在测试SQL数据库中运行某些SQL代码或其他我可以用来在每个VM中运行一些性能测试以及基准/基准性能的最佳实践,以便在移动之前我可以了解哪台计算机的性能优于其他计算机那些机器到Prod或UAT环境?谢谢戴维。

2
sys.dm_db_index_usage_stats中的信息是否可靠
我正在从没有文档的旧系统中归档数据。幸运的我... 我想找出表的创建时间,上次访问时间等。我是否可以相信此查询将为我提供正确的答案,还是我首先需要检查一些参数?SQL Server 2008 R2: SELECT t.Name AS Tabelname, p.rows AS NoOfRows, MAX(us.last_user_lookup) AS LastUsed, t.create_date AS CreatedDate FROM sys.tables t INNER JOIN sys.indexes i ON t.OBJECT_ID = i.object_id INNER JOIN sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id LEFT JOIN --A lot of the tables did not …

1
与单独的SELECT相比,在OR条件下索引查找要慢得多
根据这些问题和给出的答案: SQL 2008 Server-性能损失可能与非常大的表有关 具有历史数据的大表分配了过多的SQL Server 2008 Std。内存-其他数据库的性能损失 我在数据库SupervisionP中有一个表,定义如下: CREATE TABLE [dbo].[PenData]( [IDUkazatel] [smallint] NOT NULL, [Cas] [datetime2](0) NOT NULL, [Hodnota] [real] NULL, [HodnotaMax] [real] NULL, [HodnotaMin] [real] NULL, CONSTRAINT [PK_Data] PRIMARY KEY CLUSTERED ( [IDUkazatel] ASC, [Cas] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS …

1
在使用集群复合键对表进行“大”插入期间会发生什么?
我的SQL知识是有限的,因此我将使用的术语很可能不是正确的术语。 我有一个表,用于存储多个位置的测试结果。 测试将记录在不同位置(没有网络连接)的不同数据库中,并且“主”位置将定期从其他位置“导入”测试结果。 我计划在LocationId(int)和Date(datetime)列上按此顺序有一个集群复合主键。原因是它应该将一个位置的所有结果保持在一起,并且我几乎永远不会按日期范围进行查询,而是按日期范围和位置进行查询。 行大小为80到100个字节,测试结果的数量不应超过几百万。典型的“导入”将从另一个位置插入50到10万个结果。 进口期间会发生什么?SQL是否会“移动”现有行以维护集群,还是会让表变得“碎片化”?如果一次完成一行导入,是否会对性能造成重大影响?我是否应该只是不理会行的顺序,而只是添加一个Identity列作为主键,并在Date列上添加一个索引来帮助查询?

3
AlwaysOn可用性组log_send_rate
在所有在虚拟机和裸机上运行Windows 2012和SQL Server 2012的AlwaysOn设置上,我发现log_send_rate sys.dm_hadr_database_replica_states始终返回错误值。 例如(对于同步模式) sys.dm_hadr_database_replica_states.log_send_rate(ave = 36,571(kb / s在bol中列出)) Perfmon-SQLServer:可用性副本-发送到副本/秒的字节数(最大值= 486,000.000,平均= 259,000.000) Perfmon-SQLServer:Databases-刷新的日志字节/秒(最大值= 653,044.000,平均= 341,000.000) 我还没有看到任何关于此的帖子,但它似乎无法正常工作。正确的log_send_rate值对于监视AlwaysOn很有用。 其他人有没有经历过?

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.