SQL Server Management Studio 未编写所有对象的脚本

SQL Server Management Studio 未编写所有对象的脚本

我一直尝试使用 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

我以前从来没有遇到过这个问题。

一些基本问题:

  1. SQL Server 是什么版本?
  2. 你正在运行什么操作系统?
  3. 您如何登录 SQL 服务器?
  4. 您是否已验证您的帐户对所有对象具有完全访问权限?
  5. 您可以使用脚本失败的对象吗?(例如:从 nonScriptingTable 中选择 top(10) *)

只要提供进一步的信息,我们也许能够提供一些帮助。

更新 1:

您是否尝试过分离 2000 数据库并重新连接到 SQL 2005/2008 实例,然后提升数据库级别,然后尝试编写脚本?

相关内容