我一直在尝试使用 SQL Server 2005 Management Studio 编写数据库脚本。我无法让它编写一些对象的脚本。它编写其他脚本,但跳过了一些。
我可以提供详细的屏幕截图
- 选择的选项
- 包括所有表格
- 脚本文件所在的文件夹
- 在编写脚本之前文件夹为空
- 在编写表格脚本时,脚本进程说成功
- 目标文件夹不再是空的,有一百个左右的脚本文件
- 某些表的脚本不在文件夹中。
早期的 SSMS 不会编写某些视图的脚本。
生成脚本任务不生成脚本是已知的事情吗?
更新
Microsoft Connect上的已知问题,但 Microsoft 无法重现这些步骤,因此他们关闭了票证。
在 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 server的?
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 编写脚本,它们都会失败。在 Enterprise Manager 中这不是问题:
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,请按喇叭。
更新(四年后):鸣喇叭!
我编写了一个命令行实用程序来通过 SMO 编写所有 MSSQL 对象的脚本。
知道它是否设法编写所有对象的脚本会很有趣。如果工具对单个对象失败,则将 SMO 异常写入 stderr。
我以前从未遇到过这个问题。
一些基本问题:
有了一些进一步的信息,我们也许可以提供一些帮助。
更新1:
您是否尝试过分离 2000 数据库并重新附加到 SQL 2005/2008 实例,然后提高数据库级别,然后尝试编写脚本?