我一直尝试使用 SQL Server 2005 Management Studio 编写数据库脚本。我无法让它编写某些对象的脚本。它编写了其他对象的脚本,但跳过了一些对象。
我可以提供详细的屏幕截图
- 正在选择的选项
- 包括所有表格
- 脚本文件存放的文件夹
- 编写脚本之前文件夹是空的
- 脚本编写过程说成功编写表格脚本时
- 目标文件夹不再是空的,里面有大约一百个脚本文件
- 一些表的脚本不在文件夹中。
并且早期的 SSMS 不会编写某些视图的脚本。
是否已知“生成脚本”任务不会生成脚本?
更新
已知问题Microsoft Connect,但微软无法重现这些步骤,所以他们关闭了票。
在 SQL Server 2005 上失败,在 SQL Server 2008 上也失败。
更新二
一些基本问题:
1.SQL Server 什么版本?
Microsoft SQL Server 2000 - 8.00.194 (Intel X86)
Microsoft SQL Server 2005 - 9.00.3042.00 (Intel X86)
Microsoft SQL Server 2008 - 10.0.2531.0 (Intel X86)
Microsoft SQL Server 2008 - 10.0.5768.0 (X64)
Microsoft SQL Server 2005 Management Studio: 9.00.4035.00
Microsoft SQL Server 2008 Management Studio: 10.0.1600.22
2.您正在运行什么操作系统?
Windows Server 2000
Windows Server 2003
Windows Server 2008
Windows Server 2008 R2 Standard
3.您如何登录SQL服务器?
sa/password
Trusted authentication
4.您是否已验证您的帐户对所有对象具有完全访问权限?
Yes, i have access to all objects.
5.您能使用无法编写脚本的对象吗?(例如:从 nonScriptingTable 中选择 top(10) *)
Yes, all objects work fine.
SQL Server Enterprise Manager can script the objects fine.
更新三
不管你针对哪个版本的 SQL Server 编写脚本,它们都会失败。在企业管理器中这不是问题:
Client Tools SQL Server 2000 SQL Server 2005 SQL Server 2008
============ =============== =============== ===============
2000 Yes n/a n/a
2005 No No No
2008 No No No
更新四
使用以下方法在数据库中未发现任何错误:
DBCC CHECKDB
go
DBCC CHECKCONSTRAINTS
go
DBCC CHECKFILEGROUP
go
DBCC CHECKIDENT
go
DBCC CHECKCATALOG
go
EXECUTE sp_msforeachtable 'DBCC CHECKTABLE (''?'')'
如果您讨厌 SSMS,请按喇叭。
更新(四年后):鸣喇叭!
答案1
我写了一个命令行实用程序通过 SMO 为所有 MSSQL 对象编写脚本。
了解它是否能够编写所有对象的脚本将会很有趣。如果该工具对单个对象失败,则 SMO 异常将写入 stderr。
答案2
我以前从来没有遇到过这个问题。
一些基本问题:
- SQL Server 是什么版本?
- 你正在运行什么操作系统?
- 您如何登录 SQL 服务器?
- 您是否已验证您的帐户对所有对象具有完全访问权限?
- 您可以使用脚本失败的对象吗?(例如:从 nonScriptingTable 中选择 top(10) *)
只要提供进一步的信息,我们也许能够提供一些帮助。
更新 1:
您是否尝试过分离 2000 数据库并重新连接到 SQL 2005/2008 实例,然后提升数据库级别,然后尝试编写脚本?