Questions tagged «sql-server-2000»

SQL Server 2000(主要版本8.00.xxxx)。还请标记sql-server。

4
我怎样才能知道为什么在某个表上插入会很慢?
我知道,出于多种原因,在SQL表上执行INSERT操作可能会很慢: 桌子上是否存在INSERT TRIGGER 许多必须检查的强制约束(通常是外键) 当在表的中间插入一行时,页面在聚集索引中拆分 更新所有相关的非聚集索引 阻止桌面上的其他活动 IO写响应时间差 ...我错过了什么? 如何确定我的具体情况中哪个责任人?如何衡量分页与非聚集索引更新与其他所有内容的影响? 我有一个存储的过程,一次插入大约10,000行(从临时表中),每10k行大约需要90秒。这太慢了,因为它会导致其他sps超时。 我已经查看了执行计划,并且看到了INSERT CLUSTERED INDEX任务和FK查找中的所有INDEX SEEKS,但仍不能确定为什么要花这么长时间。没有触发器,但是表中确实有少数FKey(似乎已正确索引)。 这是一个SQL 2000数据库。

1
将SQL Server 2000数据库升级到2008 R2并启用新功能
我最近将SQL Server 2000数据库升级到2008 R2。 我所做的是: 在旧计算机上关闭SQL Server 2000(快速)服务, 将数据文件(mydatabase.mdf和mydatabase.ldf)移至新计算机, 运行SQL Server Management Studio 2008, 连接到本地数据库引擎, 将数据文件附加到数据库。 将数据库的兼容性级别更改为SQL 2008(100)。 问题:我还应该怎么做才能完成迁移? 我想要: 使用诸如校验和和完整恢复模型之类的新功能, 使该数据库与在SQL 2008 R2中创建的数据库完全相同, 使该数据库具有完全的兼容性,正确性,并且非常适合新的SQL 2008 R2数据库引擎。 换句话说:我只想知道如何正确地将旧的SQL 2000数据库正确地完全转换为新的2008 R2数据库,请对所有事情都做对了保持冷静,并对所有新功能感到满意。 我问这个问题,是因为我在Internet上发现了很多网站,这些网站说了很多不同的内容,这让我感到困惑:有些人说需要重建索引,而另一些人说要做其他事情……现在我一无所知,所以我想听听经验丰富的人的意见和清晰的分步说明。我在一家非常小的公司工作,我一个人工作,我不想搞砸。 主席先生,您的回答给我留下了深刻的印象,没想到那么多。 所以一些评论: 该数据库现已投入生产。就像我说的那样,如我在第一篇文章中所描述的那样,它使用deattach-attach方法进行了升级,并且在MSDN 上进行了描述:http : //msdn.microsoft.com/zh-cn/library/ms189625.aspx必须快速完成,所以我被迫那样做。让我们忘记这有多么不恰当,而将注意力集中在当前情况上。 用户/权限在这里不是问题-人数很少,权限很简单。 直到2012年,使用数据库的应用程序都与SQL 2000兼容,因此这也不是问题。 数据库文件(MDF)并不大-只有大约1GB。 几个问题: 您建议使用备份/还原方法,但是我如上所述,所以现在可以遇到任何问题吗?一切正常,没有任何问题。 关于校验和和完整恢复模型:在SQL 2000上不可用/未启用,因此我现在想使用它们。您说过,我唯一需要做的就是在数据库属性中启用这些选项?我读过某个地方,那还不够,还应该重建索引或其他内容。我真的不知道,我只是问。 我正在准备将该数据库迁移到SQL 2012-首先是从SQL 2000到2008 R2,现在是从2008 R2到2012(由于缺少对SQL …

2
如何重置sa密码?
我在计算机上丢失了sa密码,当我直接使用admin组中的帐户登录计算机时,SQL Server Management Studio将不允许我使用Windows身份验证登录。 我的计划是简单地登录服务器,通过Windows身份验证进行连接,并重置sa以使用新密码。由于我无法通过Windows身份验证进行连接,因此无法正常工作。 我还能如何重设sa密码?

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 产生这个结果? 错误消息:消息8180,级别16,状态1,行1的语句无法准备。消息125,级别15,状态4,第1行Case表达式只能嵌套到级别10。 显然,这里没有嵌套CASE表达式,尽管有十多个“分支”。 另一个奇怪的地方。此内联表值函数产生相同的错误: ALTER FUNCTION [dbo].[fn_MyFunction] ( @var varchar(20) ) RETURNS TABLE AS RETURN ( SELECT CASE column WHEN 'a' THEN …

3
我应该使用分离/复制/附加还是通过备份-还原-重放来迁移数据?
我即将着手将数据库文件迁移到新的SAN(从旧的SAN)到abd,我有两种选择来实现。(1)建议我研究将完全备份还原到服务器上新数据库的工作水平。但是,(2)我最初的计划是通过分离然后重新附加数据库将文件从旧SAN复制到新SAN。 我的直觉告诉我,我宁愿分离,复制和附加,因为它看起来似乎更安全,但这可能只是我的天真。我不想在重命名数据库的过程中错过事务或以某种方式“破坏某些东西”。 我想我的问题是,我对BACKUP-RESTORE-Replay选项的怀疑是否合理,该选项还有其他优点或风险?

1
如何设计查询以暂停/睡眠/等待指定的时间?
我正在针对SQL Server 2000实例测试监视应用程序。如何编写需要花费指定时间的T-SQL查询?例如,大多数脚本语言都具有类似SLEEP命令的内容,该命令使您可以在指定的时间段内暂停脚本执行。我正在寻找与SQL Server 2000兼容的类似内容。这旨在测试监视应用程序的长期运行的查询阈值设置。


6
存储过程的突然执行计划
我试图了解SQL Server 2000所遇到的问题。我们是一个中等交易量的网站,我们有一个存储的proc调用sp_GetCurrentTransactions,它接受一个customerID和两个日期。 现在,根据日期和客户,此查询可以返回从零到1000s的行。 问题是:我们经历过的是,突然之间Execution Timeout Expired,当特定客户端尝试执行该存储的proc时,我们将获得许多错误(通常是类似错误)。因此,我们检查了查询,在SSMS中运行该查询,发现它花费了30秒。因此,我们重新编译存储的proc,然后-bang-它现在可以在300ms内运行。 我已经与我们的DBA谈过此事。他告诉我,当我们创建存储的proc时,数据库创建了一个查询计划。他说这对那组参数来说是一个很好的计划,但是如果您向它扔一些参数,那么该计划将不是该数据的最佳计划,因此您会发现它运行缓慢。 呈现给我的选项是将问题查询从存储的proc转移回动态SQL,该SQL具有每次运行时创建的执行计划。 这感觉就像是退后了一步,我觉得必须有一种解决方法。还有其他方法可以解决此问题吗? 任何和所有答复表示赞赏。


6
在没有2005或2008实例的情况下从SQL Server 2000迁移到2012
我遇到了三个旧的数据库,它们都安装在SQL Server 2000上,我需要移至2012年。我认为标准方法是还原到2005或2008实例,更新,重新导出并最终还原到2012年。 很好,除非我们没有2005或2008实例。 是否有任何替代方法或其他方法可能值得尝试? 作为参考,数据库仅包含15-20个表和一些视图,它们看起来非常简单,备份大小仅为100-200MB。

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

2
Windows 10上的SQL Server 2000
我需要在Windows 10上安装SQL Server MSDE 2000 SP4。 我还有其他运行Windows 7和8.1的计算机,SQL Server MSDE 2000正常运行(也配置了合并复制)。 现在,我在Windows 10上测试了相同的场景,但是安装在安装过程中意外关闭。 我知道此版本非常旧,但是是否有解决方法将其安装在Windows 10上?

5
查询而无需指定表的架构
我从SQL Server 2000导入了一堆表到我的2008数据库。所有导入的表都以我的用户名作为前缀,例如:erpadmin.tablename。 在表属性中,它将“ erpadmin”列为数据库架构。当我编写查询时,我现在必须包含“ erpadmin”。在所有表名前面,这令人困惑。 当前结果: select * from erpadmin.tablename 所需结果: select * from tablename

1
由于数据移动,无法继续使用NOLOCK进行扫描
我们运行SQL Server 2000,并且每晚都有一些此类错误。 Could not continue scan with NOLOCK due to data movement 引发此错误的查询是一个大型的复杂查询,连接了十几个表。我们的基础数据可以经常更新。 文化上的“最佳实践”是,过去,引入NOLOCK提示可以提高性能并提高并发性。该查询不必是100%准确的,即我们可以忍受脏读等。但是,尽管我们拥有所有这些锁定提示,但我们仍在努力理解为什么数据库抛出此错误。 任何人都可以对此有所了解-彬彬有礼,我实际上是程序员,而不是DBA :) PS:我们已经应用了下面提到的修复程序:http : //support.microsoft.com/kb/815008

1
对SQL Server 2000中所有表,视图,过程的GRANT权限
我想知道是否存在使用SQL Server 2000语法的T-SQL来对特定数据库的所有表和视图进行GRANT SELECT,INSERT,UPDATE,DELETE的相当有效的方法,但不包括100个对象中的2个或3个。我还希望能够对所有存储过程授予EXEC特权。 目前,我正在使用以下代码逐一更改它们。对大约100个表和100个视图执行此操作将花费太长时间,并且通过GUI花费的时间甚至更长(除非我也做错了)。 use [DATABASE_NAME] GO GRANT DELETE ON [dbo].[table_name]TO [user_name] GO use [DATABASE_NAME] GO GRANT INSERT ON [dbo].[table_name]TO [user_name] GO use [DATABASE_NAME] GO GRANT SELECT ON [dbo].[table_name]TO [user_name] GO use [DATABASE_NAME] GO GRANT UPDATE ON [dbo].[table_name]TO [user_name] GO 如何使用T-SQL在所有用户表和视图之间循环以授予某些特权,同时排除几个对象?

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.