Questions tagged «sql-server-2008»

SQL Server 2008(主要版本10.00.xxxx)。请同时用sql-server标记。

1
在SQLCMD中执行从SSMS生成的TSQL脚本。报价失败
我正在尝试通过执行SQL Server Management Studio中“生成脚本”工具生成的脚本来将数据库部署到计算机上。 这是我发出的命令: sqlcmd -S LOCALHOST\sqlexpress -I -U user -P ******** -i C:\Rollouts\NI-9-25-2012_10-42-AM\Rollout.sql > rolloutlog.txt 我收到这样的错误: Sqlcmd:错误:文件'C:\ Rollouts \ NI-9-25-2012_10-42-AM \ Rollout.sql'中命令'''附近第39488行的语法错误。 当我使用文本编辑器查看此行时,所有符号都指向带引号的问题。 有问题的行如下所示: $(''。cat-menu-new'')。slideDown(''slow''); 是否应该执行或生成脚本以支持脚本中的引号的开关?

3
查询时SSRS是否锁定表?
我的高级DBA告诉我,默认情况下,SQL Query执行不会锁定该表。 我的SQL Server Reporting Services(SSRS)报告存在一些问题,似乎在锁定方面出现了一些问题并出现了一些错误。 我做了一些谷歌搜索,但没有找到任何东西。 SSRS报告是否锁定正在查询的表? 是否有任何MSDN文档专门记录此行为?

1
OPTION FORCE ORDER提高性能,直到删除行
我有一个稍微复杂的SQL Server 2008查询(大约200行相当密集的SQL),但没有按照我的需要执行。随着时间的流逝,性能从大约0.5秒下降到大约2秒。 看一下执行计划,很明显,通过重新排序联接,可以提高性能。我做到了,而且做到了……下降到约0.3秒。现在,该查询具有“ OPTION FORCE ORDER”提示,并且生活很顺利。 今天,我来了,清理数据库。我存档了大约20%的行,除了删除行外,在相关数据库中不执行任何操作...执行计划的执行总数为软管。它会完全判断某些子树将返回多少行,并且(例如)替换为: <Hash> 与 <NestedLoops Optimized='false' WithUnorderedPrefetch='true'> 现在,查询时间从大约0.3秒增加到大约18秒。(!)只是因为我删除了行。如果删除查询提示,我将返回大约2秒的查询时间。更好,但是更糟。 将数据库还原到多个位置和服务器后,我重现了该问题。简单地从每个表中删除大约20%的行总是会导致此问题。 对于强制联接顺序来说,使查询估计完全不准确(从而使查询时间无法预测)是否正常? 我应该只是希望我要么必须接受次优的查询性能,要么像鹰一样看着它并经常手动编辑查询提示?还是暗示每个联接?.3s至2s是一个很大的选择。 很明显,为什么优化器在删除行后就炸毁了?例如,“是的,它进行了一次样本扫描,并且由于我在数据历史记录中较早地归档了大多数行,因此样本产生了稀疏的结果,因此它低估了对排序后的哈希操作的需要”? 如果您想查看执行计划,请建议一个可以张贴它们的位置。否则,我将采样最惊人的部分。这是基本的错误估计,paren中的数字是(估计:实际)行。 / Clustered Index Scan (908:7229) Nested Loops (Inner Join) --< \ NonClustered Index Seek (1:7229) 请注意,内部循环应扫描908行,但扫描52,258,441。如果准确,则此分支将运行约2毫秒,而不是12秒。在删除行之前,此内部联接估计值的总和仅为2,并且对两个聚簇索引进行哈希匹配。

1
sp_execute期望类型为'int'的参数'@handle'
我正在尝试检查存储过程,如果我的目标数据库中存在表。如果没有,那么我将使用源数据库中的information_schema表创建表。但是,当我使用sp_execute尝试并返回表(如果该表存在)时,会收到错误消息,过程期望类型为'int'的参数'@handle'。 我没有使用@handle参数。有人可以告诉我这个错误是什么意思,为什么我会收到它?我的代码的相关部分如下。 DECLARE @SQL NVARCHAR(MAX), @Parameters NVARCHAR(4000), @TableNotExists INT, @SourceTable NVARCHAR(200), @DestDB NVARCHAR(200) BEGIN SET @SourceTable = 'table' SET @DestDB = 'database' SET @Parameters = N'@SourceTableIN NVARCHAR(200), @TableNotExistsOut INT OUTPUT' SET @SQL = N'USE [' + @DestDB + '] IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = ''BASE …


1
添加SPARSE使表更大
我有一个通用的日志表,大约有500万行。 有一个“强类型”字段存储事件类型,还有一堆“弱类型”列包含与事件相关的数据。也就是说,那些“错误输入”列的含义取决于事件的类型。 这些列定义为: USER_CHAR1 nvarchar(150) null, USER_CHAR2 nvarchar(150) null, USER_CHAR3 nvarchar(150) null, USER_CHAR4 nvarchar(150) null, USER_CHAR5 nvarchar(150) null, USER_INTEGER1 int null, USER_INTEGER2 int null, USER_INTEGER3 int null, USER_INTEGER4 int null, USER_INTEGER5 int null, USER_FLAG1 bit null, USER_FLAG2 bit null, USER_FLAG3 bit null, USER_FLAG4 bit null, USER_FLAG5 bit null, USER_FLOAT1 float …

1
如何获得准确的查询性能?
我正在尝试提高存储过程的性能。当我运行SP时,它几乎立即完成,就好像已缓存了某些内容一样。有人告诉我在SSMS中执行SP之前,请使用以下两行SQL: DBCC DROPCLEANBUFFERS DBCC FREEPROCCACHE 当我使用上面两行代码运行SP时,大约需要8秒钟。但是,这是否真的给了我真正的执行时间(就像我从应用程序中运行一样)?我怎么知道?

2
存储XML数据的数据类型:VARCHAR(MAX)或XML
我正在使用SQL Server 2008为一组新资源定义一个架构...在这种情况下,每个记录(例如row)将需要存储XML片段。不时 尽管不经常 我将需要查询XML以查找元素和属性值。如果任由我自己设计,尽管倾向于让我相信这是有问题的,但我倾向于使用xml数据类型。这使我想到了我的问题。 在这种情况下,尝试决定将XML存储在xml列与varchar(MAX)列之间时,应该考虑哪些因素 如果有帮助,这里有一些其他详细信息: 对于这些片段(例如XSD的)使用架构的决定尚未决定 碎片的大小范围从小到很大 所有XML的格式都正确 在一天的过程中,需要大约3个月的时间,通过在线查询支持收集多达10,000个碎片 对XML的查询将全天进行,但是很少会出现这种类型的并发查询。

4
我如何知道哪个存储过程或触发器正在使用SQL Server 2008 R2上的表?
就是这种情况,在我正在检查的数据库中,有一个保存用户历史记录的存档表,并且有一个触发器或存储过程,在一段时间后,从该表中删除行,以避免该表过大。同样,我没有设计数据库,我只是在维护使用该数据库的应用程序,所以我不知道这些存储过程或触发器的名称,我要做的是找到该存储过程或触发,请检查代码并对其进行修改,以使此“用户历史记录”在表上保留的时间更长。 有人告诉我检查“ sysobjects”表,在那里我实际上可以看到具有相同名称的表,但这是我唯一能够检索到的信息,有什么建议吗? 谢谢。

5
查询在SQL 2005与SQL 2008R2上的运行方式不同
在我的办公室,我们有一个非常丑陋的查询,但在生产环境和开发环境(分别为20秒和4秒)中运行得很好。但是,在我们的测试环境中,它需要4个小时以上。SQL2005(+最新补丁程序)正在生产和开发中。SQL2008R2正在测试中。 我看了一下查询计划,它表明SQL2008R2通过表假脱机(惰性假脱机)使用TempDB来存储从链接服务器返回的行。下一步显示嵌套循环(左半连接)占用了查询的96.3%。两家运营商之间的界限为5,398MB! SQL 2005的查询计划不使用tempdb,也不使用左反半联接。 下面是经过清理的代码,执行计划顶部是2005年计划,底部是2008R2。 是什么导致急剧的减速和变化?我期望看到一个不同的执行计划,所以这不会打扰我。查询时间的急剧下降是困扰我的原因。 由于2008R2版本使用的是tempdb,因此我是否必须查看底层硬件,所以我必须查看如何优化其用法? 有没有更好的方法来编写查询? 谢谢您的帮助。 INSERT INTO Table1_GroupLock (iGroupID, dLockedDate) SELECT Table1.iGroupID, GETDATE() FROM Table1 WHERE NOT EXISTS ( SELECT 1 FROM LinkedServer.Database.Table2 Alias2 WHERE ( Alias2.FirstName + Alias2.LastName = dbo.fnRemoveNonLetter(Table1.FullName) AND NOT dbo.fnRemoveNonLetter(Table1.FullName) IS NULL AND NOT Alias2.FirstName IS NULL AND NOT Alias2.LastName IS NULL …

7
尽管总是说作业成功,但计划备份任务并不总是备份所有数据库
我在SQL 2008中有一项工作,该工作运行存储的proc来备份所有数据库。这每天通过sql server agent作业运行。 它每天都会成功退出,但是有些时候只有备份了一些数据库后才能成功退出。每次可以有不同数量的数据库。大多数情况下,它成功备份了所有数据库,但有时成功备份了2个,有时成功备份了5个,等等。 我在作业历史记录,事件查看器或SQL Server日志中看不到任何错误。 尽管该文件夹是可扩展存储卷上文件夹的“连接”,但备份仍在本地磁盘上进行。 操作系统是Windows 2003 64位,作为运行在Vmware ESXi 5主机上的虚拟机运行Sql Server 2008 Web版64位。 存储过程: ALTER PROCEDURE [dbo].[backup_all_databases] @path VARCHAR(255)='c:\backups\' AS DECLARE @name VARCHAR(50) -- database name DECLARE @fileName VARCHAR(256) -- filename for backup DECLARE @fileDate VARCHAR(20) -- used for file name DECLARE @dbIsReadOnly sql_variant -- is database …

2
如何帮助SQL Server识别我的索引视图列不可为空?
我在SQL Server 2008中定义了以下索引视图(您可以从gist下载工作架构以进行测试): CREATE VIEW dbo.balances WITH SCHEMABINDING AS SELECT user_id , currency_id , SUM(transaction_amount) AS balance_amount , COUNT_BIG(*) AS transaction_count FROM dbo.transactions GROUP BY user_id , currency_id ; GO CREATE UNIQUE CLUSTERED INDEX UQ_balances_user_id_currency_id ON dbo.balances ( user_id , currency_id ); GO user_id,currency_id和transaction_amount都定义为中的NOT NULL列dbo.transactions。但是,当我看着Management Studio中的对象资源管理器,它标志着这两个视图定义balance_amount,并transaction_count为NULL在视图-able列。 我看了几个讨论,其中最相关的讨论表明一些功能改组可以帮助SQL Server识别视图列始终为NOT NULL。不过,在我的情况下,这样的改组是不可能的,因为在索引视图中不允许使用聚合函数的表达式(例如ISNULL()over SUM())。 …

3
链接SQL Server代理作业
我有几个工作包,每个我在sql server代理中设置了工作。有时我应该一起跑。按给定顺序运行它们的最佳方法是什么?我对SQL Server代理无法将作业作为要执行的作业步骤感到有些惊讶。我确实尝试过

3
在SQL Server 2008中使用varchar的速度影响
在过去,使用varcharover char是一个很大的问题,因为over varchar存储在与该行其余部分不同的页面上。如今,SQL Server 2008还是这样吗?我会看到将1-3 varchar(5)列更改为char(5)表中的列会获得任何内存/性能提升吗? a)说2.000.000行b)如果任何varchar列是索引/主键的一部分


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.