标签: sql-server-2005

将 SQL Server 2000 移动到 SQL Server 2005 时出错 NOLOCK 错误

我需要将数据库从 SQL Server 2000(32 位)移动到 SQL Server 2005。但是,当我将数据库连接到 SQL Server 2005 时,它给了我错误。(NOLOCK 错误)

另外,在我运行 dbcc check db 命令以查找数据库错误后,我收到以下错误。

Server: Msg 8929, Level 16, State 1, Line 1

Object ID 2: Errors found in text ID 727515136 
owned by data record identified by RID    =   (1:391:14) id = 491864819 and indid = 9.
Server: Msg 8929, Level 16, State 1, Line 1
Object ID 2: Errors found in text ID 727646208 
owned by data record identified by RID = (1:391:16) id …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 migration sql-server-2000

5
推荐指数
1
解决办法
455
查看次数

在 SQL Server 2005 中停用订阅的常见原因是什么?

我正在尝试在 SQL Server 2005 中管理数据库复制。我已经设置了我的发布、分发和订阅,并且它似乎在开始时正常工作。

但是,一段时间后,我的订阅被停用,需要重新初始化。

这是事务性发布,具有不可更新的请求订阅。该出版物具有“订阅到期”选项“订阅永不过期,但在重新初始化之前可以停用它们”。发布者和订阅者在同一个 LAN 上。

订阅被停用的常见原因是什么?

例如,订阅者上的插入失败(由于模式更改处理不当)是否会导致订阅被停用?

Cannot insert explicit value for identity column in table 'SOME_TABLE' when  
IDENTITY_INSERT is set to OFF. (Source: MSSQLServer, Error number: 544)
Run Code Online (Sandbox Code Playgroud)

如果这会导致订阅被停用,还有哪些其他情况需要注意?

replication sql-server-2005 sql-server

5
推荐指数
1
解决办法
1085
查看次数

SQL Server:索引创建日期

在 SQL Server 2005 及更高版本中,如何找到创建索引的时间?

index sql-server-2005

5
推荐指数
1
解决办法
2万
查看次数

需要 ASYNC_NETWORK_IO 方面的帮助

我们有一台 SQL Server 2005 服务器,它为 20 个网站提供服务,其中一个是我们的自定义 CMS,还有一些其他微型网站。我是新手,刚开始在这里查看数据库。

问题是我们遇到了 SQL Server 在几天后变慢的问题,这导致我们重新启动服务。我用 SQL Profiler 做了一些统计,但经过审查后,我没有看到任何突出的东西。这就是我现在在这里的原因。我在网上环顾四周,发现了 ASYNC_NETWORK_IO。所以,我现在正在尝试遵循这条轨道。

这就是我所做的:

我清除了等待统计表。

DBCC SQLPERF ('sys.dm_os_wait_stats', 'CLEAR')
Run Code Online (Sandbox Code Playgroud)

最后 15 分钟的结果:

ASYNC_NETWORK_IO    46798     34953     812     1953
CMEMTHREAD          28300     42328     1187    6437
CXPACKET            361571    7048515   38984   48859
Run Code Online (Sandbox Code Playgroud)

从我所读到的 ASYNC_NETWORK_IO 与等待客户端应用程序的 SQL 有关。

2个问题:

1)我的假设是否正确,这些数字在 15 分钟的监控中似乎很高?

2)我从这里去哪里?我的下一步应该是什么?

我正在努力学习这些东西是如何工作的,我明白这是我将不得不继续深入研究的东西。

朝着正确的方向推动会很棒。

performance sql-server-2005 waits

5
推荐指数
1
解决办法
902
查看次数

如何在 SQL Server Management Studio 2005 中打开对选定数据库的查询

我的情况:

使用 Microsoft SQL Server Management Studio 2005,我使用 Windows 身份验证连接到服务器——我将其称为 Prod。

在这个 Prod 服务器中有多个数据库:dbA、dbB 和 dbC。

在以前的计算机上,如果我选择了特定数据库(例如 dbB)的“Tables”文件夹并从本地或网络目录打开现有查询(.sql 文件),则现有查询将打开“连接”到选定的数据库 (dbB)。在我的替换计算机上,现有查询始终打开,连接到 SQL 编辑器工具栏上的“master”,而不是预期的 dbB 数据库。

有一点不便,是的,但如果有一个简单的设置,我可以修改或更新以恢复此首选行为(查询打开到以前选择的数据库),我很感激学习如何做到这一点。

在此先感谢您的任何建议。

sql-server-2005 configuration

5
推荐指数
2
解决办法
1万
查看次数

管理多个 SQL Server 数据库

我公司有很多分支机构,每个分支机构都有一个数据库服务器。有些使用 SQL Server 2005,有些使用 SQL Server 2008。所有这些服务器的架构都相同。

每当我想做添加列等 DDL 时,我要么通过一个接一个地连接到每个服务器,要么通过批处理文件使用 OSQL 运行 DDL 脚本。

是否有内置工具可以在多台服务器上同时执行 DDL?第三方工具怎么样?(最好是免费的)

sql-server-2005 sql-server-2008

5
推荐指数
1
解决办法
2389
查看次数

如何在不运行 dbcc loginfo 的情况下找到 SQL 2005 数据库的 VLF 计数?

是否可以在不运行 DBCC LOGINFO 的情况下在数据库的事务日志中找到 VLF 的数量?当计数是我的 t-sql 脚本需要从中获取的唯一信息时,DBCC LOGINFO 似乎有点沉重和冗长。

sql-server-2005

5
推荐指数
2
解决办法
1939
查看次数

在 SQL Server 中删除然后插入还是更新然后插入更好?

我正在使用 SQL Server 2005。我有一个表,它基本上是一个带有时间戳的 id 列表,用于记录该 id 上次发生事件的时间。

我有一个表变量中的 id 列表,我想用当前时间更新表中所有已经在表中的 id,并为尚未在表中的 id 插入新记录。SQL 2005 没有 MERGE 语句或 ON DUPLICATE KEY UPDATE。

以下哪种形式是首选:

UPDATE IdTimes SET LastEventTime = GetDate() WHERE Id in (SELECT NewId FROM @NewIds)

INSERT INTO IdTimes(Id, LastEventTime)
   SELECT NewId, GetDate() FROM @NewIds
   WHERE NOT EXISTS (SELECT Id FROM IdTimes WHERE NewId = Id)
Run Code Online (Sandbox Code Playgroud)

或者:

DELETE FROM IdTimes WHERE Id IN (SELECT NewId FROM @NewIds)
INSERT INTO IdTimes(Id, LastEventTime) SELECT NewId, GetDate() FROM @NewIds
Run Code Online (Sandbox Code Playgroud)

或者是否有更好的解决方案来实现这一目标?

sql-server-2005 best-practices

5
推荐指数
1
解决办法
6417
查看次数

通过 VPN (WAN) 的 SQL Server 查询结果传输时间

我在使用 SQL Server Management Studio 管理和查询的一个远程 SQL Server 2005 上有一个神秘现象。我通过 VPN 隧道(由 ISP 提供,大约 8 MBit/s 上下)连接到服务器。

当我打开一个新的查询窗口(第一次连接)时,结果会很快传输到客户端。假设 <1 秒。当我重复查询几次时,结果传输变得越来越慢,最多 5 秒甚至更多。它与查询执行时间无关,只是传输到客户端 (SSMS) 的时间。

现在,更奇怪的是:我对同一个服务器/数据库打开了第二个查询窗口,即使我同时运行它们,查询结果的传输也总是很快。即使在两个小时之后,结果总是会在另一个窗口中快速传输,而在第一个查询选项卡中则需要更长的时间。

我使用这个测试查询是为了避免一些潜在的缓存问题:

select top 2000 newid() from <SOMETABLE>
Run Code Online (Sandbox Code Playgroud)

我尝试更改服务器注册的连接数据包大小,但并没有太大变化。

什么可能导致问题?

更新:正如我在 Serverfault.com 上交叉发布的评论中所建议的那样

performance sql-server-2005 ssms

5
推荐指数
1
解决办法
3008
查看次数

我可以做些什么来加快查询中的键查找

我正在使用 SQL2005 并针对它们调用查询 simila 对此

    declare @art table (id int primary key, naziv varchar(35) null, sifra varchar(15) null, jm int null);   

            insert into @art
            select id, left(naziv,35), left(sifra,15), jm from art a
            where   (a.id = @art_id@ or @art_id@ = 0 )

Select 
      s.art_id
     ,sum(kol) as kol
     ,sum(kol*mpc) as MPCI
     /*--and meny others --/
    from doc d 
                inner join dokumenti dk on (d.tip = dk.tip)
                inner join sdo s on (d.id=s.doc_id)
        where           
                        d.datum between  @do_datuma@ and @do_datuma@
                        and dk.prodaja = 1 …
Run Code Online (Sandbox Code Playgroud)

index sql-server-2005 sql-server execution-plan

5
推荐指数
1
解决办法
1万
查看次数