AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 130977
In Process
Deane
Deane
Asked: 2010-04-10 07:21:04 +0800 CST2010-04-10 07:21:04 +0800 CST 2010-04-10 07:21:04 +0800 CST

为什么 SQL 2008“生成脚本...”实用程序会生成无效的 SQL 脚本?

  • 772

我有一个需要恢复到 SQL2005 实例的 SQL2008 数据库。

我已经完成了“生成脚本...”向导,将其设置为与 SQL2005 兼容,并生成了一个 62MB 的 SQL 脚本。

当我在 SQL2005 实例上运行它时,它会抛出各种错误,其中一些非常奇怪,因为它们描述了一个无效的数据库。

  • FK 约束是错误的。它试图在不存在的列上创建 FK。
  • 它正在尝试插入具有重复键错误的记录。
  • 它试图两次创建相同的对象。

知道这怎么会发生吗?这个 SQL 脚本是由 SQL Server Management Studio 在我尝试恢复它的几分钟前生成的,并且没有被修改。

为什么这会生成一个无效的 SQL 文件?它不只是描述了SQL2008数据库,因为我们正在使用它,所以它可能是有效的?

特别是,重复的键插入错误让我感到困惑。如果 SQL 脚本中有键约束,那么 SQL2008 表中一定有相同的东西。那么我们如何在其中获取违反该键约束的行呢?

更新:

这与降级到 SQL2005 有关。我运行了与 SQL2008 兼容的脚本,然后转身在它刚刚来自的同一个 SQL 实例上运行生成的脚本,它运行时没有错误。因此,当我尝试使其与 SQL2005 兼容时,问题就来了。

另一个更新:

我重新生成了与 SQL2005 兼容的脚本,然后转身在 SQL2008 实例上运行它。它工作得很好。所以...

  • SQL2008 脚本 --> SQL2008 实例工作
  • SQL2005 脚本 --> SQL2008 实例工作
  • SQL2005 脚本 --> SQL2005 实例不起作用

解决方案:

您不能为 SQL2005 创建脚本并在 Express 上运行它。我切换到标准,它工作得很好。

sql-server sql
  • 2 2 个回答
  • 572 Views

2 个回答

  • Voted
  1. Deane
    2010-04-10T11:41:14+08:002010-04-10T11:41:14+08:00

    问题是我试图导入到 SQL 2005 Express。我切换到 SQL 2005 Standard,并且能够正确运行脚本。

    • 1
  2. Seanchán Torpéist
    2010-04-10T07:56:32+08:002010-04-10T07:56:32+08:00

    我不知道这几天这是否内置于 SQL Server 2008 Management Studio,但在 2005 年,如果您使用单独的下载(SQL Server 数据库发布向导)在编写脚本时有更多选择,请在此处获取:Microsoft 下载中心

    这对你有些用处。

    • 0

相关问题

  • sql server 连接字符串上的网络数据包大小以提高吞吐量

  • 基于 Microsoft 的服务器(IIS、MSSQL 等)上的病毒扫描应排除哪些内容?

  • SQL 洗衣清单

  • OPENROWSET、二进制文件、varchars 和 varbinaries

  • 聚集索引与非聚集索引?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve