标签: sql-server-2000

我怎么知道为什么某个表上的插入很慢?

我知道 SQL 表上的 INSERT 可能由于多种原因而变慢:

  • 表上存在 INSERT TRIGGERs
  • 许多必须检查的强制约束(通常是外键)
  • 在表中间插入一行时聚集索引中的页面拆分
  • 更新所有相关的非聚集索引
  • 阻止桌子上的其他活动
  • IO 写响应时间差
  • ......我错过了什么?

在我的特定情况下,我如何判断哪个负责?如何衡量页面拆分与非聚集索引更新与其他所有内容的影响?

我有一个存储过程,一次插入大约 10,000 行(来自临时表),每 10k 行大约需要 90 秒。这是令人无法接受的缓慢,因为它会导致其他 spid 超时。

我查看了执行计划,我看到了 INSERT CLUSTERED INDEX 任务和 FK 查找中的所有 INDEX SEEKS,但它仍然没有确切地告诉我为什么需要这么长时间。没有触发器,但该表确实有一些 FKey(似乎已正确索引)。

这是一个 SQL 2000 数据库。

sql-server insert sql-server-2000 database-tuning

30
推荐指数
4
解决办法
6万
查看次数

怎么重置sa密码?

我在一台机器上丢失了sa密码,当我直接使用admin组中的帐户登录机器时,SQL Server Management Studio将不允许我使用Windows身份验证登录。

我的计划是简单地登录服务器,通过 Windows 身份验证连接,然后重置 sa 以使用新密码。由于我无法通过 Windows 身份验证连接,这将不起作用。

我还可以如何重置 sa 密码?

security sql-server-2000

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

将 SQL Server 2000 数据库升级到 2008 R2 并启用新功能

我最近将 SQL Server 2000 数据库升级到 2008 R2。


我所做的是:

  1. 关闭旧机器上的 SQL Server 2000 (express) 服务,
  2. 将数据文件(mydatabase.mdfmydatabase.ldf)移动到新机器,
  3. 运行 SQL Server Management Studio 2008,
  4. 连接到本地数据库引擎,
  5. 将数据文件附加到数据库。
  6. 修改数据库兼容级别为SQL 2008(100)。

问题:我还应该做些什么来完成迁移?

我想要:

  1. 使用校验和和完整恢复模型等新功能,
  2. 使这个数据库与在 SQL 2008 R2 中创建的完全一样,
  3. 使该数据库完全兼容、正确并且非常适合新的 SQL 2008 R2 数据库引擎。

换句话说:我只想知道如何正确且完全地将旧的 SQL 2000 数据库转换为新的 2008 R2 数据库,保持冷静,一切都做得对,并对所有新功能感到满意。


我问这个问题是因为我在互联网上发现很多网站都说了很多不同的东西让我感到困惑:有人说需要重建索引,有人说要做其他事情......现在我什么都不知道,所以我想听听有经验的人的意见和清晰的分步说明。我在一家非常小的公司工作,我一个人,我不想把事情搞砸。


先生,您的回答给我留下了深刻的印象,我没想到这么多。


所以一些评论:

  1. 该数据库现已投入生产。正如我所说,它是使用 deattach-attach 方法升级的,正如我在第一篇文章中所描述的和 MSDN 上所述:http : //msdn.microsoft.com/en-us/library/ms189625.aspx 它必须快速完成,所以我被迫这样做。让我们忘记它有多么不合适,而专注于当前的情况。

  2. 用户/权限在这里不是问题 - 只有少数并且权限很简单。

  3. 使用数据库的应用程序兼容 SQL 2000 到 2012 年,所以这也不是问题。

  4. 数据库文件 (MDF) 不大 - 只有大约 1GB。


还有几个问题:

  1. 你推荐使用备份/恢复方法,但我按照上面写的做了,所以我现在会遇到什么问题吗?一切正常,没有任何问题。 …

migration sql-server-2000 sql-server-2008-r2

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

为什么链接服务器在 CASE 表达式中限制为 10 个分支?

为什么这个CASE表达式:

SELECT CASE column 
        WHEN 'a' THEN '1' 
        WHEN 'b' THEN '2' 
        ... c -> i
        WHEN 'j' THEN '10' 
        WHEN 'k' THEN '11'  
    END [col] 
FROM LinkedServer.database.dbo.table
Run Code Online (Sandbox Code Playgroud)

产生这个结果?

错误消息:
无法准备消息 8180,级别 16,状态 1,第 1 行语句。
消息 125,级别 15,状态 4,第 1 行
Case 表达式只能嵌套到级别 10。

显然这里没有嵌套CASE表达式,尽管有 10 多个“分支”。

另一个怪事。这个内联表值函数产生相同的错误:

ALTER FUNCTION [dbo].[fn_MyFunction]
(   
     @var varchar(20)
)
RETURNS TABLE 
AS
RETURN 
(
    SELECT CASE column 
            WHEN 'a' THEN '1' 
            WHEN 'b' THEN '2' 
            ... c -> i …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server-2008 sql-server sql-server-2000 linked-server

19
推荐指数
3
解决办法
2万
查看次数

我应该使用分离/复制/附加还是通过备份-恢复-重放来迁移数据?

我即将着手将数据库文件迁移到新的 SAN(从旧的 SAN),并且我有几个选项可以实现这一点。(1) 有人建议我调查将完整备份恢复到服务器上新数据库的工作量。但是,(2) 我最初的计划是通过分离然后重新附加数据库将文件从旧 SAN 复制到新 SAN。

我的直觉告诉我,我宁愿分离、复制和附加,因为它看起来更安全,但这可能只是我的天真。我不想在重命名数据库的过程中错过事务或以某种方式“破坏某些东西”。

我想我的问题是我对 BACKUP-RESTORE-Replay 选项的怀疑是否合理,以及该选项的其他优点或风险是什么?

sql-server migration sql-server-2000

18
推荐指数
2
解决办法
6084
查看次数

存储过程的执行计划突然变慢

我试图了解我们在 SQL Server 2000 中遇到的一个问题。我们是一个中等事务性的网站,我们有一个名为的存储过程sp_GetCurrentTransactions,它接受一个客户ID和两个日期。

现在,根据日期和客户,此查询可以返回从零到 1000 行的任何内容。

问题:我们所经历的是,Execution Timeout Expired当特定客户端尝试执行该存储过程时,我们会突然收到许多错误(通常或类似的错误)。所以我们检查了查询,在 SSMS 中运行它,发现它需要 30 秒。所以我们重新编译存储的 proc 并且 -bang- 它现在在 300 毫秒内运行。

我已经和我们的 DBA 谈过了。他告诉我,当我们创建存储过程时,数据库创建了一个查询计划。他说对于那组参数是一个很好的计划,但是如果你向它抛出一组特定的参数,那么该计划将不是该数据的最佳计划,因此你会看到它运行缓慢。

提供给我的选项是将问题查询从存储过程移回动态 SQL,在每次运行时都会创建执行计划。

这对我来说就像是后退了一步,我觉得必须有办法解决这个问题。有没有其他方法来处理这个问题?

任何和所有的回应表示赞赏。

sql-server stored-procedures optimization sql-server-2000

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

有什么原因我不应该将我的数据库所有者设置为 [sa]?

昨天我问了这个关于更改我拥有的多个数据库的 dbo 的问题。这种变化是有道理的,但我想说清楚。

有什么好的理由或情况为什么我不应该将数据库的 dbo 设置为 [sa]?

sql-server-2005 sql-server permissions sql-server-2000

15
推荐指数
1
解决办法
1717
查看次数

我可以从 SQL Server Management Studio 2012 连接到 SQL Server 2000 实例吗?

我想将我的开发机器更新到 SQL Server 2012,但我仍然管理一些(非常旧的)SQL Server 2000 机器。我的 2012 SSMS 能够连接到那些 SQL Server 2000 机器吗?

SQL Server 2008 R2 工作正常(我现在拥有的)。

sql-server-2000 ssms sql-server-2012

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

如何设计查询以暂停/休眠/等待指定的时间?

我正在针对 SQL Server 2000 实例测试监控应用程序。如何编写一个花费我指定的时间的 T-SQL 查询?例如,大多数脚本语言都有类似SLEEP命令的东西,它允许您在指定的时间内暂停脚本执行。我正在寻找与 SQL Server 2000 兼容的类似内容。这是为了测试监控应用程序的长时间运行的查询阈值设置。

sql-server sql-server-2000 t-sql

15
推荐指数
1
解决办法
6378
查看次数

如何延迟 SQL Server 启动

当我们启动 SQL Server 时,SAN 驱动器可能还不可用。有没有办法将 SQL Server 启动延迟 1 分钟?现在我们必须在启动服务器后重新启动 SQL Server。

sql-server-2000

12
推荐指数
2
解决办法
8192
查看次数