Questions tagged «sql-server-2008-r2»

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

1
SQL Server错误“缺少序列号2的族”
我正在尝试还原服务器上的本地数据库,但是备份出现问题。我做了一个文件.bak,但是每次尝试将其加载到服务器上时,它都不允许我这样做。 这是我收到的错误消息的屏幕截图: 我读到可以RESTORE LABELONLY用来还原文件,但仍然无法正常工作,每次运行该文件时,我都会得到以下信息: 无法打开备份设备'C:\ Program Files \ Microsoft SQL Server \ MSSQL10_50.JOSEMA \ MSSQL \ Backu \ INNOVA-T.bak'。操作系统错误3(未能为此错误检索文本。原因:15105)。消息3013,级别16,状态1,第1行 RESTORE LABELONLY正在异常终止。 任何帮助都会很棒。谢谢。

1
要复制的LOB数据(2135980)的长度超过配置的最大值65536
我收到复制错误“要复制的LOB数据长度(2135980)超过配置的最大65536”。 以前曾使用sp_configure将其设置为最大值(-1),并且对sys.configurations的查询确认正在使用最大值(-1)。 EXEC sp_configure 'max text repl size', -1 ; RECONFIGURE; GO select * from sys.configurations where name like 'max text repl size%'; GO 我尝试对“最大文本复制大小”使用较大的值,而不是对最大值进行设置,然后将其关闭然后再打开,都无济于事。 还有其他事情可能会覆盖“最大文本替换大小”设置,或者我可以看到的其他任何地方?

2
SQL Server-NTEXT列和字符串处理
我有一张桌子,有一NTEXT列叫comments。我有第二个字符串,我们称它为anothercomment(a varchar),需要comments在单词后面的给定字符串中放置它UPDATEHERE。 强制转换为nvarchar(max)截断comments字符串,所以我不能使用CHARINDEX()(Msg 8152, Level 16, State 10, Line 2 String or binary data would be truncated.)。的datalength()类似符号。我曾经检查过是否有几千个大于8000个字符的列。 我要实现的示例(尽管字符串更长): 评论 - This is a test UPDATEHERE This is the end of the test 另一个评论- . This is inserted. 结果字符串- This is a test UPDATEHERE. This is inserted. This is the end …

3
是否可以根据SQL Server版本选择RAISERROR或THROW?
现在是我的代码: BEGIN TRY INSERT INTO TABLE (F1,F2,F3) VALUES ('1','2','3') END TRY BEGIN CATCH ;THROW END CATCH 除非它在装有SQL 2008的计算机上运行,​​否则效果很好。我想让CATCH块对SQL版本进行检查,如果THROW等于或高于2012,则运行THROW,如果它等于或高于2012,则运行RAISERROR。语法错误,我想知道是否有可能。即使像这样简单的事情也对我不起作用。 BEGIN CATCH IF ((SELECT SERVERPROPERTY('productversion')) >= 11) ;THROW END CATCH 任何建议表示赞赏。

1
除非使用OPTION(RECOMPILE),否则不使用索引SEEK。
(问题移至SO) 我有一个表(虚拟数据),其中聚集索引包含2列: 现在,我运行这两个查询: declare @productid int =1 , @priceid int = 1 SELECT productid, t.priceID FROM Transactions AS t WHERE (productID = @productid OR @productid IS NULL) AND (priceid = @priceid OR @priceid IS NULL) SELECT productid, t.priceID FROM Transactions AS t WHERE (productID = @productid) AND (priceid = @priceid) …

2
有理由使用SELECT…WITH XLOCK?
我面临着一些反复出现的死锁,其中之一是键锁,并且包含带有XLOCK提示的SELECT查询,该查询成为了死锁的受害者。另一个语句是对其中一个表的INSERT,该表是第一个查询的视图的一部分。 视图: create view dbo.viewE as select * from dbo.E where myValue > 13000 选择查询: select * from dbo.viewE with (XLOCK) where A > GETUTCDATE() INSERT语句: INSERT INTO [dbo].[E] (myValue,A) VALUES (10,GetDate()) 基础表dbo.E在大约20列中拥有约300万行,其中有些是ntext。 取出查询并使用两个事务手动进行模拟,该行为是可重现的。如果从选择中删除了XLOCK,则行为会更改。 死锁图: <deadlock-list> <deadlock victim="process222222221"> <process-list> <process id="process222222221" taskpriority="0" logused="0" waitresource="KEY: 5:72057604035644444 (ccdf51accc0c)" waittime="2522" ownerId="27202256401" transactionname="SELECT" lasttranstarted="2015-09-14T16:32:36.160" …


1
在非常繁忙的表上创建索引
我们有一个insert\select每次都有很多表的表(例如每秒有100台计算机插入\更新)。 在即使一秒钟都无法锁定的表上创建索引的最佳方法是什么? 如果创建索引,我确定它会锁定请求,而我做不到。 这是一张有100万行以上的大表。

2
SARG基数估计,为什么不进行全扫描?
为什么没有全扫描(在SQL 2008 R2和2012上)? 测试数据: DROP TABLE dbo.TestTable GO CREATE TABLE dbo.TestTable ( TestTableID INT IDENTITY PRIMARY KEY, VeryRandomText VarChar(50), VeryRandomText2 VarChar(50) ) Go Set NoCount ON Declare @i int Set @i = 0 While @i < 10000 Begin Insert Into dbo.TestTable(VeryRandomText, VeryRandomText2) Values(Cast(Rand()*10000000 as VarChar(50)), Cast(Rand()*10000000 as VarChar(50))); Set @i …

1
在实际安装之前,从可用设置中确定SQL Server版本和版本?
我们正在经历从SQL Server 2008 R2 Enterprise到标准版的降级过程。 为了启动上述活动,我们正在寻找可用的SQL Server标准版。我们找到了一个,但对以下几点感到困惑: 安装文件(由以前的团队成员保存)位于一个名为SQL Server 2008 R2的文件夹中,但是为了在开始安装之前进行交叉检查,我们通过了default.ini文件,该文件显示: SQLSERVER2008 Configuration File [SQLSERVER2008] 这使人怀疑这是否是所需的SQL Server的正确版本。那么,在我们继续尝试安装之前,如果上述方法无法确定版本,还有其他方法吗? 我们是否还可以检查该可用SQL Server的版本,因为在设置上,我们几乎无法确定它是否真的是标准版? 根据我们的安全政策,我们不能简单地下载新媒体。此外,我们无权下载。

3
验证现有用户的密码策略
我最近进入一种环境,其中许多数据库登录都未enforce_password_policy启用该标志。 即将进行的审核需要验证这些登录名的密码。 我使用以下查询来获取登录列表以及这些标志是打开还是关闭。 select @@SERVERNAME as servername, name, IS_SRVROLEMEMBER('sysadmin', name) as SYSADMIN, type_desc, create_date, is_policy_checked, is_disabled, password_hash, PWDCOMPARE(name, password_hash) as UsernameAsPassword FROM sys.sql_logins 但是,这并不能告诉我密码是否实际上遵守密码策略,因为该标志仅在创建用户时才相关。 有已知的方法来测试现有用户的密码策略遵从性吗? 我无法访问旧密码,因此我希望使用不需要它们的方法。

1
高PAGELATCH_ *和WRITELOG等待。他们有关系吗?
我们看到非常高的PAGELATCH_EX和PAGELATCH_SH等待类型以及较高的WRITELOG等待。我已经诊断出导致PAGELATCH等待的查询,并且可以通过降低插入由IDENTITY值定义的繁忙集群主键的插入率来消除它们。我知道这种现象被称为最后一页插入闩锁争用。 但是我的问题是,当插入新记录时,SQL Server是否在缓冲区页面上执行排他的PAGELATCH_EX,将记录​​插入缓冲区页面,将记录写入事务日志,然后释放排他的PAGELATCH_EX,详情如下:https:// www.microsoft.com/zh-cn/download/details.aspx?id=26665第24页。还是先将记录写到事务日志中,然后再进行PAGELATCH_EX的详细说明,“解决高度并发的PAGELATCH争用-插入工作负载-背景信息SQLCAT的指南:关系引擎 如果将记录写到锁存机制之外的日志中,那么我可以排除对磁盘的慢速写入,这是导致PAGELATCH等待时间较长的原因。但是,如果保持闩锁直到记录难以记录,那么我应该考虑WRITELOG。 同样,具有多个非聚集索引会导致PAGELATCH_ *锁存器保持更长的时间,即,如果表具有聚簇且多个非聚簇索引被同时添加并释放到每个索引缓冲区页的锁存器? 更新1 阅读confio-sql-server-writelog-wait幻灯片2和一般的WAL体系结构之后。现在,我的理解是,两本白皮书中详细介绍的“记录行已被修改的日志条目”步骤是指SQL Server在事务日志缓存(而不是磁盘)中记录更改。一旦事务完成或缓冲区已满,所有记录将立即刷新到磁盘。

2
SQL Job步骤作为其他SQL帐户运行
我很好奇如何设置要作为其他SQL登录帐户执行的SQL作业步骤。看来我需要设置一个需要现有凭据的新代理帐户。创建凭据时,我唯一的选择是使用Windows登录凭据。 我尝试运行的作业如下。还有其他一些语句,但是当我将作业步骤设置为以SQL登录名运行时,它将失败。 insert into [dbo].[TableA] SELECT ss.[Ref_ID] ,mm.[studentID] ,mm.[studentPersonID] ,mm.[studentFirstname] FROM [dbo].[TableB] mm left outer join [dbo].[TableC] ss on ss.parentPersonID=mm.parentPersonID and mm.studentPersonID = ss.studentPersonID where ss.Ref_ID is not null; 通过SQL作业步骤运行此命令时,它将失败。 Executed as user: an_admin_account. Access to the remote server is denied because the current security context is not trusted. [SQLSTATE …

3
有没有办法找出谁更改了登录密码?
我试图找出谁更改了SQL Server 2008 R2中的登录密码。 我已经检查了默认跟踪-它不记录该事件。默认跟踪将包括以下与安全性有关的事件: /* Audit Add DB user event Audit Add login to server role event Audit Add Member to DB role event Audit Add Role event Audit Add login event Audit Backup/Restore event Audit Change Database owner Audit DBCC event Audit Database Scope GDR event (Grant, Deny, …

3
一两个索引?
我在数据库的表上创建了以下索引: CREATE INDEX [idx_index1] on [table1] (col1, col2, col3) 服务器建议以下“丢失”索引: CREATE INDEX [idx_index2] on [table1] (col1, col2) INCLUDE (col3, col4, col5, col6....) 在我看来,修改现有索引定义以包括建议的列,而不是创建需要维护的新索引,似乎是合乎逻辑的。在col1和col2上选择的查询可以与index2一样有效地使用index1。我是对的还是我可能错过了什么?

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.