我需要将数据库从 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 中管理数据库复制。我已经设置了我的发布、分发和订阅,并且它似乎在开始时正常工作。
但是,一段时间后,我的订阅被停用,需要重新初始化。
这是事务性发布,具有不可更新的请求订阅。该出版物具有“订阅到期”选项“订阅永不过期,但在重新初始化之前可以停用它们”。发布者和订阅者在同一个 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)
如果这会导致订阅被停用,还有哪些其他情况需要注意?
我们有一台 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)我从这里去哪里?我的下一步应该是什么?
我正在努力学习这些东西是如何工作的,我明白这是我将不得不继续深入研究的东西。
朝着正确的方向推动会很棒。
我的情况:
使用 Microsoft SQL Server Management Studio 2005,我使用 Windows 身份验证连接到服务器——我将其称为 Prod。
在这个 Prod 服务器中有多个数据库:dbA、dbB 和 dbC。
在以前的计算机上,如果我选择了特定数据库(例如 dbB)的“Tables”文件夹并从本地或网络目录打开现有查询(.sql 文件),则现有查询将打开“连接”到选定的数据库 (dbB)。在我的替换计算机上,现有查询始终打开,连接到 SQL 编辑器工具栏上的“master”,而不是预期的 dbB 数据库。
有一点不便,是的,但如果有一个简单的设置,我可以修改或更新以恢复此首选行为(查询打开到以前选择的数据库),我很感激学习如何做到这一点。
在此先感谢您的任何建议。
我公司有很多分支机构,每个分支机构都有一个数据库服务器。有些使用 SQL Server 2005,有些使用 SQL Server 2008。所有这些服务器的架构都相同。
每当我想做添加列等 DDL 时,我要么通过一个接一个地连接到每个服务器,要么通过批处理文件使用 OSQL 运行 DDL 脚本。
是否有内置工具可以在多台服务器上同时执行 DDL?第三方工具怎么样?(最好是免费的)
是否可以在不运行 DBCC LOGINFO 的情况下在数据库的事务日志中找到 VLF 的数量?当计数是我的 t-sql 脚本需要从中获取的唯一信息时,DBCC LOGINFO 似乎有点沉重和冗长。
我正在使用 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 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 上交叉发布的评论中所建议的那样。
我正在使用 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) sql-server-2005 ×10
index ×2
performance ×2
sql-server ×2
migration ×1
replication ×1
ssms ×1
waits ×1