疑难解答概述

在 Microsoft® SQL Server™ 2000 中对问题进行疑难解答时，以 SQL Server 产品支持服务 (PSS) 的联机疑难解答作为切入点，可从中找到解决方法。有关更多信息，请参见 PSS 的联机疑难解答。此外，还可以审阅最新的错误日志中的信息，以便准确确定问题的出处。有关 SQL Server 2000 疑难解答的最新信息，可以在 Microsoft Web 站点 SQL Server 网页的 FAQs & Highlights 部分找到。

错误日志

SQL Server 2000 中的错误日志提供了有关 SQL Server 中事件的完整信息。可能还需要查看 Microsoft Windows® 2000 或 Windows NT® 4.0 应用程序日志，其中完整地勾画了在 Windows NT 4.0 和 Windows 2000 操作系统上发生的事件以及 SQL Server 和 SQL Server 代理程序中的事件。两种日志中均包括信息消息（如启动数据），并且自动记录所有事件发生的日期和时间。

根据启动 SQL Server 的方法对 SQL Server 事件进行日志记录。

  • 当 SQL Server 作为 Windows 2000 或 Windows NT 4.0 操作系统的一项服务启动时，将在 SQL Server 错误日志、Windows 2000 或 Windows NT 应用程序日志，或同时在两种日志中对事件进行日志记录。

  • 当 SQL Server 从命令提示启动时，将在 SQL Server 错误日志和标准输出（通常是监视器，除非输出被重定向到别处）中对事件进行日志记录。

有关如何查看日志的更多信息，请参见查看错误日志。

向后兼容性问题

如果遇到了有关 SQL Server 2000 与 SQL Server 早期版本之间的兼容性问题，请参见 SQL Server 2000 与 SQL Server 7.0 版以及 SQL Server 2000 与 SQL Server 6.5 版。有关 SQL Server 6.5 和 SQL Server 2000 之间功能更改的详细列表的更多信息，请参见 SQL Server 向后兼容性详细信息。

其它资源

要访问 Microsoft 知识库和其它最新信息，订阅一份 Microsoft TechNet 或 MSDN® 会有所帮助。有关更多信息，请参见：

  • Microsoft TechNet 网页，网址为：Microsoft Web 站点。

  • MSDN 网页，网址为：Microsoft Web 站点。
查看基于 Web 的信息

在疑难解答主题中，提供了众多到 Microsoft 产品支持服务 (PSS) Web 页的链接。还提供了到新的疑难解答以及相关的 Microsoft 知识库文章和白皮书的链接。为确保 Web 链接的正确性，并保证链接随时间推移仍保持稳定，进行了各种努力。但是，如果链接不能使用，请访问 MSDN Online Support Web 页，网址为：Microsoft Web 站点，并导航到正确的位置。

请参见

监视错误日志

疑难解答计划


疑难解答计划

要将服务器故障或其它疑难解答情况的影响降低到最小程度，请

  • 制定并测试一个备份和灾难恢复计划。

  • 使用数据库维护计划向导调度脚本在活动少的时期运行。

  • 验证为数据库计划的安全性权限和角色。
灾难恢复计划

灾难恢复评价的重要性不可小看。如果数据无法再得到意味着什么业务风险？使系统进行备份的同时保持运行所耽误的每个小时将核多少成本？不要指望数据能迅速恢复。事先充分理解恢复步骤，将把未来灾难所带来的压力和不确定性降低到最小程度。以下几项重要环节需要考虑：

  • 定期评估当前灾难恢复计划的有效性。

  • 有足够的硬件和人员实现恢复过程。

请参见

数据完整性验证

数据库维护计划向导

设计备份和还原策略

灾难恢复计划

管理权限


查看错误日志

Microsoft®SQL Server™ 2000 错误日志可用 SQL Server 企业管理器或任何文本编辑器查看。最新的错误日志的名称为 Errorlog，默认情况下，其放置目录为 Files\Microsoft SQL Server\Mssql\Log。

从 SQL Server 企业管理器查看 SQL Server 错误日志

  1. 展开服务器组，然后展开服务器。

  2. 展开"管理"，然后展开"SQL Server 日志"。

  3. 单击"SQL Server 日志"以进行查看。错误日志信息显示在详细信息窗格内。

Microsoft Windows® 2000 或 Windows NT® 4.0 应用程序日志完整地勾画出在 Windows 2000 或 Windows NT 操作系统上发生的事件。

查看 Windows 2000 应用程序日志

  1. 在"开始"菜单上指向"程序"菜单，指向"管理工具"，然后单击"事件查看器"。

  2. 在左窗格中，单击"应用程序日志"。

    Microsoft SQL Server 事件由"源"列中的 MSSQLServer 或 MSSQL$<server named instance> 项标识。SQL Server 代理事件由 SQLServerAgent 或 SQLAgent$<server named instance> 项标识。Microsoft 搜索服务由 Microsoft Search 项标识。

  3. 要查看不同计算机的日志，在右窗格中，右击"事件查看器"，然后单击"连接到另一台计算机"命令。

    说明 如果正在查看的是本地计算机的日志，请略过此步。

  4. 完成"选择计算机"对话框。

  5. 要只显示 SQL Server 事件，在"查看"菜单上，选择"筛选"命令，然后在"事件源"框中，选择 MSSQLServer 或 MSSQL$<server named instance> 项。（可选）

  6. 若要查看有关某事件的更多信息，请双击该事件。

查看 Windows NT 4.0 应用程序日志

  1. 在"开始"菜单上指向"程序"菜单，指向"管理工具"，然后单击"事件查看器"。

  2. 如果未显示应用程序日志，请在"日志"菜单上单击"应用程序"命令。

    Microsoft SQL Server 事件由"源"列中的 MSSQLServer 或 MSSQL$<server named instance> 项标识。SQL Server 代理事件由 SQLServerAgent 或 SQLAgent$<server named instance> 项标识。Microsoft 搜索服务由 Microsoft Search 项标识。

  3. 要查看不同计算机的日志，在"日志"菜单上，单击"选择计算机"命令，然后完成"选择计算机"对话框中的各项操作。

    说明 如果正在查看的是本地计算机的日志，请略过此步。

  4. 若要只显示 SQL Server 事件，请在"视图"菜单上单击"筛选事件"命令，然后在"源"框中选择 MSSQLServer。（可选）

  5. 若要只查看 SQL Server 代理事件，则请选择 SQLServerAgent。

  6. 若要查看有关某事件的更多信息，请双击该事件。

请参见

错误信息


PSS 的联机疑难解答

Microsoft® 产品支持服务 (PSS) 有已经实现的联机疑难解答，它们是基于 Web 的交互式指导，用来准确定位并解决客户的问题。

要使用联机疑难解答，请访问与问题相关的网页，并选择所列出的问题，例如，"I can't create or administer a linked server"或"I can't establish a trusted connection"。随后的具有交互式链接的语句和问题可以帮助准确定位并诊断疑难问题。然后，尽快给出解决该问题的步骤的建议。

请参见

查看联机疑难解答和其它 PSS 基于 Web 的信息


备份和还原相关帮助

在 Microsoft® SQL Server™ 2000 中进行备份或还原数据库和事务日志时可能遇到问题，使用联机备份和还原疑难解答可帮助解决这些问题。

说明 对于 SQL Server 联机丛书的国际用户，问题的文字以及对知识库文章的引用以英文显示，并可在未本地化的 Web 站点上找到。

对备份和还原问题进行疑难解答的常见切入点包括：

  • Problems with backing up or restoring a database or transaction log that is password protected.

  • Problems appending or initializing a backup to an existing backup device.

  • Problems when backing up a transaction log or performing a differential file or file group backup while the database is set to the 'SIMPLE' recovery mode.

  • Poor performance when performing a backup or restore.

  • The database restore completes successfully, but the backup appears to have restored the database to a point in time earlier than expected.

  • Problems performing a point-in-time restore of a transaction log.

  • System database backups cannot be restored on a different build of SQL Server.

  • Error 927 when attempting to use a database after a successful restore.

  • Error 3201.

  • Error 3203.

  • Error 3024.

  • Error 3038.

  • Error 3101.

  • Error 3108.

  • Error 3168.

  • Error 3141.

  • Error 3159.

  • Error 4330.

  • Errors 1834 and 3156.

  • Errors 4326 and 4305.

若要联机访问疑难解答，请参见查看联机疑难解答和其它 PSS 基于 Web 的信息。


连接性相关帮助

有一些问题可能会引起使用 Microsoft® SQL Server™ 2000 时收到连接性错误，联机连接性疑难解答可帮助解决这些问题。

说明 对于 SQL Server 联机丛书的国际用户，问题的文字以及对知识库文章的引用以英文显示，并可在未本地化的 Web 站点上找到。

对连接性问题进行疑难解答的常见切入点包括：

  • I'm unable to register a new server in SQL 企业管理器.

  • I'm unable to connect - "Specified SQL Server not found," "SQL Server does not exist," or "Access denied."

  • I'm unable to connect from an ODBC application.

  • I'm unable to establish a trusted connection.

  • I'm unable to connect. The message is "Login failed."

  • I'm unable to connect through a firewall.

  • Encryption not supported on SQL Server ConnectionOpen (PreLoginHandshake()).

若要联机访问疑难解答，请参见查看联机疑难解答和其它 PSS 基于 Web 的信息。


数据转换服务相关帮助

在 Microsoft® SQL Server™ 2000 中可能遇到数据转换服务 (DTS) 方面的问题，联机数据转换服务疑难解答可帮助解决这些问题。

说明 对于 SQL Server 联机丛书的国际用户，问题的文字以及对知识库文章的引用以英文显示，并可在未本地化的 Web 站点上找到。

对 DTS 问题进行疑难解答的常见切入点包括：

  • I'm having a problem using DTS Designer or a wizard to create a DTS package.

  • I'm having a problem executing a scheduled package.

  • I'm having a problem executing a package that isn't scheduled.

  • My DTS package takes a long time to complete.

  • My DTS package takes a long time to stop running after it fails or is canceled.

若要联机访问疑难解答，请参见查看联机疑难解答和其它 PSS 基于 Web 的信息。


分布式查询相关帮助

在 Microsoft® SQL Server™ 2000 中使用分布式查询时可能遇到问题，联机分布式查询疑难解答可帮助解决这些问题。

说明 对于 SQL Server 联机丛书的国际用户，问题的文字以及对知识库文章的引用以英文显示，并可在未本地化的 Web 站点上找到。

对分布式查询问题进行疑难解答的常见切入点包括：

  • I have difficulty with distributed queries to an online analytical processing (OLAP) server.

  • I have difficulty with distributed queries to Oracle.

  • Distributed query performance is degraded.

  • I receive a specific error message from a distributed query, and I want more information about it.

  • I can't create, delete, or administer a linked server.

若要联机访问疑难解答，请参见查看联机疑难解答和其它 PSS 基于 Web 的信息。


全文检索相关帮助

在 Microsoft® SQL Server™ 2000 中使用全文检索功能时可能遇到问题，联机全文检索疑难解答可帮助解决这些问题。

说明 对于 SQL Server 联机丛书的国际用户，问题的文字以及对知识库文章的引用以英文显示，并可在未本地化的 Web 站点上找到。

对全文检索问题进行疑难解答的常见切入点包括：

  • I have a problem using CONTAINS or FREETEXT.

  • I can't enable databases for full-text search or full-text catalog creation.

  • I have a problem with full-text indexing or populating full-text catalogs.

  • Full-text indexing or searching performance is poor.

  • I have a problem with full-text indexing documents in IMAGE columns.

若要联机访问疑难解答，请参见查看联机疑难解答和其它 PSS 基于 Web 的信息。


性能相关帮助

使用 Microsoft® SQL Server™ 2000 时，可能会遇到导致低速查询的问题，联机 SQL Server 性能疑难解答可用来帮助解决这些问题。

说明 对于 SQL Server 联机丛书的国际用户，问题的文字以及对知识库文章的引用以英文显示，并可在未本地化的 Web 站点上找到。

对性能问题进行疑难解答的常见切入点包括：

  • My SQL Server 2000 application is slow.

  • I'm experiencing problems with blocking.

  • A stored procedure is being recompiled excessively.

  • Large batches of small queries are slower than expected.

  • An individual query is using a poor query plan.

若要联机访问疑难解答，请参见查看联机疑难解答和其它 PSS 基于 Web 的信息。


对 SQL 事件探查器问题提供帮助

在 Microsoft® SQL Server 2000 中尝试使用 SQL 事件探查器工具时可能会遇到问题，联机事件探查器疑难解答可帮助解决这些问题。

说明 对于 SQL Server 联机丛书的国际用户，问题的文字以及对知识库文章的引用以英文显示，并可在未本地化的 Web 站点上找到。

对 SQL 事件探查器问题进行疑难解答的常见切入点包括：

  • I can't connect to a SQL Server I want to profile.

  • I have a problem capturing a trace.

  • I have a problem loading a previously captured Profiler trace.

  • I have a problem replaying a previously captured Profiler trace.

  • I have a problem with the tool's graphical user interface (GUI).

  • I have some other problem with the tool.

若要联机访问疑难解答，请参见查看联机疑难解答和其它 PSS 基于 Web 的信息。


复制相关帮助

在使用 Microsoft® SQL Server 2000 时可能遇到复制问题，联机复制疑难解答可帮助解决这些问题。

说明 对于 SQL Server 联机丛书的国际用户，问题的文字以及对知识库文章的引用以英文显示，并可在未本地化的 Web 站点上找到。

对复制问题进行疑难解答的常见切入点包括：

  • Error message for a Distribution Agent:
    "The process could not connect to Subscriber '<Server_name>'. Login failed for user '<User_name>'."
  • Error message for a Distribution Agent:
    "Timeout expired."
  • Error message for a Distribution Agent:
    "Could not find stored procedure 'sp_MSins_<table_name>'."
  • Error message for a Log Reader Agent:
    "The process could not execute 'sp_repldone/sp_replcounters' on '<Server_name>'. Another logreader is replicating the database."
  • Error message for a Log Reader Agent:
    "The process could not connect to server '<Server_name>'. Login failed for user 'sa'."
  • Error message for a Log Reader Agent:
    "The process could not execute 'sp_replcmds' on '<Server_name>'. Only members of the sysadmin or db_owner roles can perform this Operation."
  • Error message for a Snapshot Agent:
    "The process could not read file '< E:\Program Files\Microsoft SQL Server\MSSQL\REPLDATA\ >'. Access is denied."
  • Error message for a Merge Agent:
    "The subscription has been marked inactive and must be reinitialized at the Publisher. Contact the database administrator."
  • Error message for Remote agent:
    "The process could not connect to Subscriber '<Server_name>'. SQL Server does not exist or access denied."
  • Error message
    "The agent is suspect. No activity reported within the last 10 minutes."

若要联机访问疑难解答，请参见查看联机疑难解答和其它 PSS 基于 Web 的信息。


安装程序帮助

 疑难解答

设置相关帮助

在安装 Microsoft® SQL Server™ 2000 以下版本时可能遇到问题，联机安装疑难解答可帮助解决这些问题：

  • Microsoft SQL Server 2000 个人版

  • Microsoft SQL Server 2000 标准版

  • Microsoft SQL Server 2000 企业版

说明 对于 SQL Server 联机丛书的国际用户，问题的文字以及对知识库文章的引用以英文显示，并可在未本地化的 Web 站点上找到。

对个人版安装进行疑难解答的常见切入点包括：

  • Does Setup stop responding when it tries to connect to the server?

  • Do you get an error when setup is trying to configure the server?

  • Does setup fail with an error indicating that you are running an evaluation version?

  • Does your system meet the minimum software and hardware requirements?

  • Do you get an error message that asks you to close all ODBC components?

  • Is Family Logon the primary network logon?

  • Do you get an error message indicating that setup cannot find SQL Server 2000?

  • Do you receive an error message indicating problems with character set and sort order?

  • Do you receive an error indicating that setup was unable to create a registry key?

  • Do you receive an error indicating that the file mfc42u.dll is read-only?

  • Is there a line in your sqlstp.log file indicating that "LoadLibrary failed on sqlsui.dll"?

  • Are you experiencing a system File Protection (SFP) issue around the install of MDAC?

对标准版安装进行疑难解答的常见切入点包括：

  • Does your system meet the minimum software and hardware requirements?

  • Do you get an error message that asks you to close all ODBC components?

  • Does setup fail with an error indicating that you are running an evaluation version?

  • Do you get an error message indicating that setup cannot find SQL Server 2000?

  • Do you receive an error message indicating problems with character set and sort order?

  • Do you receive an error indicating that setup was unable to create a registry key?

  • Do you get an error when setup is trying to configure the server?

  • Do you receive an error indicating that the file mfc42u.dll is read-only?

  • Is there a line in your sqlstp.log file indicating that "LoadLibrary failed on sqlsui.dll"?

  • Are you experiencing a system File Protection (SFP) issue around the install of MDAC?

对企业版安装进行疑难解答的常见切入点包括：

  • Does your system meet the minimum software and hardware requirements?

  • Are you installing SQL Server on a compatible operating system?

  • Do you get an error message that asks you to close all ODBC components?

  • Does setup fail with an error indicating that you are running an evaluation version?

  • Do you get an error message indicating that setup cannot find SQL Server 2000?

  • Do you receive an error message indicating problems with character set and sort order?

  • Do you receive an error indicating that setup was unable to create a registry key?

  • Do you get an error when setup is trying to configure the server?

  • Do you receive an error indicating that the file mfc42u.dll is read-only?

  • Is there a line in your sqlstp.log file indicating that "LoadLibrary failed on sqlsui.dll"?

  • Are you experiencing a system File Protection (SFP) issue around the install of MDAC?

若要联机访问疑难解答，请参见查看联机疑难解答和其它 PSS 基于 Web 的信息。


启动相关帮助

在尝试启动 Microsoft® SQL Server™ 2000 时可能遇到问题，联机启动疑难解答可帮助解决这些问题。

说明 对于 SQL Server 联机丛书的国际用户，问题的文字以及对知识库文章的引用以英文显示，并可在未本地化的 Web 站点上找到。

对启动问题进行疑难解答的常见切入点包括：

  • Error message "The service did not start due to a logon failure"

  • The SQL Server error log contains operating system errors indicating that a file couldn't be found or opened.

  • Error message "SQL Server could not find the default instance(MSSQLSERVER)."

  • Error message "Unable to Locate DLL. The dynamic link library filename could not be found in the specified path."

  • Error message "The application or DLL <Path> is not a valid Windows NT image."

  • Error message "(The system cannot find the path/file specified) occurred while performing this service operation on the MSSQLServer service"

  • SQL Server will not start, but there are no errors.

若要联机访问疑难解答，请参见查看联机疑难解答和其它 PSS 基于 Web 的信息。


SQL 邮件帮助

在 Microsoft® SQL Server™ 2000 中使用 SQL 邮件功能时可能会遇到问题，联机 SQL Server 邮件疑难解答可帮助解决这些问题。

说明 对于 SQL Server 联机丛书的国际用户，问题的文字以及对知识库文章的引用以英文显示，并可在未本地化的 Web 站点上找到。

对 SQL 邮件进行疑难解答的常见切入点包括：

  • SQL Mail won't start with Microsoft Exchange Server.

  • SQL Mail causes exception error 35909.

  • SQL Mail won't send or receive messages.

  • SQL Mail won't start with a Microsoft Mail post office.

  • The sp_processmail system stored procedure fails, but I don't receive an error message.

若要联机访问疑难解答，请参见查看联机疑难解答和其它 PSS 基于 Web 的信息。


查看联机疑难解答和其它 PSS 基于 Web 的信息

产品支持服务 (PSS) 中的联机疑难解答以一些常见的用户问题为切入点，包含最新的信息，可以帮助诊断在安装 Microsoft® SQL Server™2000 时所发生的事件。可以从许多访问点连接到联机疑难解答。

直接访问 SQL Server 疑难解答

  • 请访问 Troubleshooters 页，网址为：Microsoft Web 站点

查看 SQL Server 疑难解答

  1. 请访问链接到 Microsoft online troubleshooters 最新位置的知识库文章，网址为：Q193088 INF: SQL Troubleshooters Available on the Web。

  2. 在本文中，单击链接到 SQL Server 疑难解答的链接。

  3. 在疑难解答页，在产品列表中，选择 SQL Server。

    说明 根据导航到本页的方式，列表框下方的文本会发生更改。如果 SQL Server 不在列表中，单击"List All Microsoft Products That Have a Troubleshooter"，然后向下滚动该列表，找到 SQL Server。

  4. 单击"Go"打开 SQL Server 疑难解答列表。

  5. 从列表中选择一个 SQL Server 疑难解答，然后单击"Next"开始联机诊断进程。
使用 MSDN Online 查看疑难解答和白皮书

找到 SQL Server 疑难解答的另一种途径，也是最好的途径，是按照下列步骤定位有关 SQL Server 2000 的白皮书：

  1. 请访问 MSDN® Online Support Web 页，网址为：Microsoft Web 站点。

  2. 单击"Support Highlights & FAQs"，指定 SQL Server，然后单击"Go"按钮。
查看 SQL Server 知识库文章

到具有同一主题的知识库文章的链接会将您直接带到 Web 上的该文章。还可使用 Microsoft 知识库搜索页（可从任何产品支持 Web 页访问）按标题或编号定位文章。

请参见

联机疑难解答


常见问题

Microsoft® SQL Server 产品支持服务 (PSS) 已编辑了一个 Microsoft SQL Server™ 2000 用户常见问题列表。该列表可以在 Microsoft Web 站点 SQL Server 网页的 FAQ & Highlights（常见问题解答和要闻）中找到。

该 Web 页上的问题和解答已包括在以下疑难解答主题内：

  • SQL Server 联机丛书常见问题解答

  • SQL Server 企业管理器常见问题解答

  • 管理工具常见问题解答

  • 故障转移群集常见问题解答

  • 多实例常见问题解答

  • 编程常见问题解答

  • 复制常见问题解答

  • 服务器常见问题解答

  • 设置和安装常见问题解答

  • 升级到 SQL Server 2000 常见问题解答解答
展开常见问题解答中的文本

"常见问题"中的主题包含一种格式，使解答文本可以隐藏或展开。当单击加号 (+) 时，文本出现。例如：

展开文本是如何实现的？

解答：

单击" + 解答"以展开文本。再次单击以隐藏解答。


SQL Server 联机丛书常见问题解答

为何 SQL Server 联机丛书中某些链接的颜色不同？

解答：

首次安装 SQL Server 联机丛书时，所有链接均为一种颜色，这表示尚未访问过链接的主题。在链接到某主题以后，该主题的所有链接以另一种颜色显示。这是 HTML 浏览器的标准行为。

如何打印某个主题并包括所链接的全部子主题？

解答：

若要打印链接到某个主题的所有子主题，请单击工具栏上的"打印"按钮，然后选择"打印选定的标题和子主题"。若要使用 CTRL+P 来打印，请先单击右窗格中的任意位置，按 CTRL+P，然后选择"打印所有链接文档"复选框。


SQL Server 企业管理器常见问题解答

在系统数据库已从 SQL Server 企业管理器中的视图隐藏之后，如何令其显示？

解答：

右击服务器图标以更改显示或隐藏系统数据库和系统对象的设置。单击"编辑 SQL Server 注册属性"命令，然后在"常规"选项卡上选择"显示系统数据库和系统对象"。

查看 SQL 查询分析器的结果窗格中的信息有困难，怎么办？

解答：

如果 SQL 查询分析器的结果窗格中文本太少或太多，可以表格显示查询结果。按 CTRL+D，或单击"查询"菜单上的"以表格显示结果"命令，然后再次执行查询。

如果查看结果窗格中的相应数据仍有困难，请调整每列字符的最大个数。在"工具"菜单上单击"选项"命令，然后单击"结果"选项卡。在"每列最大字符数"框中，输入要显示的字符数。若要查看更多的字符，请将该数字设置为 256。

当"服务管理器"窗口关闭时，为何"SQL Server 服务管理器"图标不从任务栏消失？

解答：

"SQL Server 服务管理器"图标显示 Microsoft® SQL Server™ 服务之一的状态。关闭"SQL Server 服务管理器"窗口只从视图移去此对话框，它不影响任务栏中的图标。若要从任务栏移去该图标，请右击图标，然后单击"退出"命令。

如何通过 SQL Server 企业管理器在不使用鼠标的情况下管理 SQL Server？

解答：

按 SHIFT+F10 执行鼠标右击。有关键盘快捷键的更多信息，请参见在 SQL Server 联机丛书中使用辅助功能快捷键。


管理工具常见问题解答

当尝试从运行于 Microsoft Windows NT® 的 OLAP 服务器注册运行于 Microsoft® Windows® 2000 的 OLAP 服务器时，得到以下错误信息：

连接到 server2000 时发生错误。
无法连接到服务器计算机 (server2000) 上的注册表。
仍要注册该服务器吗？

如何解决该错误？

解答：

通过执行下列步骤，在运行 Windows 2000 的计算机上启动远程注册服务：
  1. 在"开始"菜单上，指向"程序"子菜单，进而指向"管理工具"选项，然后单击"服务"命令。

  2. 右击"远程注册服务"，然后在快捷菜单上单击"启动"命令。

在用户界面中可以设置 ON DELETE CASCADE 选项吗？

解答：

是。当在"关系图"用户界面中创建表时，单击"表和索引属性"。在"关系"选项卡上，选择要实现的级联引用完整性选项：
  • 级联更新相关的字段

  • 级联删除相关的记录

当在 SQL Server 企业管理器中创建新表时，看到每列都有一个名为 Description 的字段。该字段如何使用？

解答：

Description 字段的目的是使您得以存储每列的文本化描述。也有与表相关联的 Description 字段。该描述作为字段的一个扩展属性进行存储。当生成表的脚本时，"包括扩展属性"选项出现在格式页上。如果在生成脚本时选中该选项，则描述属性将在脚本中显示。

使用 SQL Server 企业管理器时，如何将数据库设置为"单用户"模式和"只供 dbo 使用"模式？

解答：

在 SQL Server 2000 中，数据库不能同时设置为"单用户"模式和"只供 dbo 使用"模式。而 SQL Server 企业管理器允许您设置以下可选选项，方法是右击要更改的数据库，单击快捷菜单上的"属性"命令，然后单击"选项"选项卡。

限制访问

  • 当未选中该选项时，允许对数据库的普通访问。

  • 当选中该选项时，可进行以下设置：
    • db_owner、dbcreator 或 sysadmin 的成员

      当选中该选项时，只允许 db_owner、dbcreator 或 sysadmin 角色的成员访问该数据库。

    • 单个用户

      当选中该选项时，只允许用户逐个访问该数据库。

SQL Server 6.5 和 7.0 数据库都有这些选项。但是，如果使用 SQL Server 2000 工具，则不能在 SQL Server 企业管理器的"数据库属性"选项卡中设置这些选项。这些选项只可以在 SQL Server 6.5 和 7.0 数据库上通过运行 sp_dboption 存储过程来进行设置。

可以在同一台计算机上同时安装有 SQL Server 7.0 和 SQL Server 2000 客户端管理工具吗？

解答：

否。在安装升级过程中，SQL Server 2000 工具替换 SQL Server 7.0 工具。此外，当将 SQL Server 2000 安装为单独实例时，如果选择升级工具，SQL Server 7.0 程序组保留，并添加 SQL Server 2000 程序组。但是，SQL Server 7.0 程序组中的图标实际执行 SQL Server 2000 工具，而不是原来的 SQL Server 7.0 工具。

是否有可能定义一种特殊的模板，当选择"新建"命令时该模板自动复制到 SQL 查询分析器的查询窗格中？

解答：

是。默认情况下，总显示一个空白文档。但是，可以定义并保存特殊的模板，方法是在 SQL 查询分析器的一个窗口中键入 Transact-SQL 语句，选择"另存为"命令，然后将它作为模板 SQL 文件 (*.tql) 保存在所需的目录中。可以通过选择工具栏上的下拉式"新建"图标，然后选择"模板"命令，来选择要打开的模板。

是否有可能使用 SQL Server 7.0 工具连接到 SQL Server 2000？

解答：

如果您计划连接到运行 SQL Server 2000 的计算机，建议将您的工具升级到 SQL Server 2000，因为大多数 SQL Server 7.0 工具不会连接到运行 SQL Server 2000 的计算机。可以连接到运行 SQL Server 2000 的计算机的 SQL Server 7.0 工具只有 SQL 查询分析器和 osql；但是，这些工具无法用来连接到 SQL Server 2000 的命名实例。


故障转移群集常见问题解答

支持使用软件容错磁盘集进行群集存储吗？

解答：

否。有关更多信息，请参见以下 Microsoft 知识库文章：

http：//support.microsoft.com/support/kb/articles/Q171/0/52.asp

Microsoft Cluster Server 中不支持软件 FT（容错）集。

SQL Server 2000 群集提供负载平衡吗？

解答：

否。SQL Server 2000 群集不提供负载平衡，它提供故障转移群集。若要在 SQL Server 的实例之间取得负载平衡，需要其它软件。

SQL Server 2000 全文检索支持群集吗？

解答：

是。

当 SQL Server 6.5 版或 SQL Server 7.0 是群集的组成部分时，如何将它们升级到 SQL Server 2000？

解答：

如果 SQL Server 6.5 或 SQL Server 7.0 的安装是群集的组成部分，则必须执行某些步骤将服务器升级到 SQL Server 2000。有关信息，请参见升级到 SQL Server 2000 故障转移群集。

有关特定过程，请参见以下主题：

  • 如何从 SQL Server 6.5 主动/被动故障转移群集升级（SQL Server 安装程序）

  • 如何从 SQL Server 6.5 主动/主动故障转移群集升级（SQL Server 安装程序）

  • 如何从 SQL Server 7.0 主动/主动故障转移群集升级（SQL Server 安装程序）

  • 如何从 SQL Server 7.0 主动/被动故障转移群集升级（SQL Server 安装程序）

  • 如何从默认实例升级到 SQL Server 2000 的默认群集实例（SQL Server 安装程序）

有关更多信息，请参见故障转移群集。

在群集环境中运行 SQL Server 2000 需要哪些硬件？

解答：

在以下地址检查 Microsoft Windows 硬件兼容列表以获得群集兼容的服务器的列表：

Microsoft Web site

说明 通过使用单词"cluster"进行搜索，因为无法组合各个组件来创建支持的系统。

此外，请参考"Microsoft Cluster Server 管理员指南"以获得支持的硬件配置的列表和硬件配置信息。

可以将 SQL Server 6.5 或 SQL Server 7.0 安装在群集的一个节点上，而将 SQL Server 2000 安装在群集的另一个节点上吗？

解答：

否。若要使 SQL Server 的两个实例参与故障转移群集，它们必须为相同版本的 SQL Server。可以具有一个本地 SQL Server 7.0 安装和一个故障转移群集 SQL Server 2000 实例。

将 SQL Server 2000 文件放在何处以提供故障转移支持？

解答：

SQL Server 安装程序在群集中每台计算机的本地磁盘上都安装 SQL Server 二进制文件新实例，并在指定的共享群集磁盘上安装系统数据库。二进制文件以完全相同的路径安装在每个群集节点上，因此必须确保每个节点与群集中所有其它节点共享一个本地驱动器号。

如何从命令行关闭 SQL Server 而又使群集服务不会将关闭解释为故障？

解答：

使用服务管理器。有关信息，请参见如何停止 SQL Server 的群集实例（服务管理器）。或者，使用 Microsoft® Windows NT® 企业版、Windows 2000 Advanced Server 或 Microsoft Windows 2000 Data Center 附带的 Cluster.exe 应用程序。Cluster.exe 作为典型群集安装程序的一部分安装，该安装程序还可以在 Microsoft Windows NT 工作站、Microsoft Windows 2000 Professional 或 Microsoft Windows 2000 Server 成员服务器计算机上运行，以只安装群集管理器和其它管理应用程序。该命令的基本语法是：

cluster [cluster name] RESOURCE [resource name] /option

在上面的命令语法中，/option 开关控制该功能。

要使用的特定选项有 /online 和 /offline。这些选项分别等同于用于非虚拟化的服务器的命令 net start mssqlserver（从命令行启动 SQL Server）和 net stop mssqlserver（从命令行关闭 SQL Server）。可以在 SQL Server Fulltext、SQL Server 代理和 SQL Server 资源上执行该过程。

以下为如何使用该命令语法的一些示例：

  • 当群集名为"SQLCluster"，资源名为"SQL Server"（这里"SQL Server"是 SQL Server 2000 资源的名称）时，使 SQL Server 2000 资源脱机：

cluster "SQLCluster" resource "SQL Server" /offline

  • 使 SQL Server 2000 资源恢复联机：

cluster "SQLCluster" resource "SQL Server" /online


多实例常见问题解答

如何安装 Analysis Services 的多实例？

解答：

与 SQL Server 不同，Analysis Services 不支持单个服务器上的多实例。不可能在同一台计算机上同时运行 OLAP Services 7.0 和 Analysis Services 2000。

当安装 SQL Server 的多实例时，每个实例的工具安装在哪里？

解答：

SQL Server 2000 总是将工具安装在系统驱动器（如 Windows NT 中的公用目录）中，因此您将只有一套工具，这套工具由所有实例公用。这套工具可用于 SQL Server 7.0 服务器，也可用于 SQL Server 2000 服务器，并且它替换可能已经安装在计算机上的 SQL Server 7.0 工具。

安装过程中必须配置实例的端口号吗？

解答：

否。安装过程中，可以选择输入端口号或允许服务器选择端口号。

当在同一台计算机上既运行 SQL Server 7.0 又运行 SQL Server 2000 时，有什么方法可以令两个实例共享相同的用户数据库？

解答：

否。SQL Server 7.0 和 SQL Server 2000 不能同时使用相同的数据库文件。SQL Server 7.0 数据库可以升级到 SQL Server 2000 数据库，但在数据库文件升级以后，则不能被 SQL Server 7.0 实例使用。当 SQL Server 7.0 数据库附加或还原到 SQL Server 2000 服务器上时，该数据库升级自动进行。没有办法将数据库文件从 SQL Server 2000 降级到 SQL Server 7.0 文件。


编程常见问题解答

SQL Server 2000 附带有 DB-Library 的新版本吗？

解答：

否。尚未针对 SQL Server 2000 增强 DB-Library。SQL Server 2000 包括的 DB-Library 功能与 SQL Server 6.5 和 7.0 DB-Library 中的功能相同。

ODBC 6.5 驱动程序可以用来连接到 SQL Server 2000 吗？

解答：

SQL Server 2000 设计为向后兼容 ODBC 应用程序的早期版本。可以实现以下情况：
  • 为连接到使用 ODBC 6.5 驱动程序的 SQL Server 6.5 而编写的应用程序可以连接到 SQL Server 2000。

  • SQL Server 2000 ODBC 驱动程序可以连接到 SQL Server 6.5。

  • 必须连接到 SQL Server 2000 的旧版应用程序可以使用 odbccmpt 实用工具标记为 6.5 兼容的 ODBC 应用程序。有关更多信息，请参见 odbccmpt 实用工具。

有关例外情况的信息，请参见级别 1：处理废止的功能。

在哪里可以找到 SQL Server 2000 附带的 MDAC redist 文件？

解答：

SQL Server 2000 光盘的 \MSEQ\x86\odbc 文件夹中有 Mdac_typ.exe 的复本。

有可能将属性/变量附加到 SQL-NS 语句吗？

解答：

否。SQL-NS 只提供对对话框的访问。无法为对话框预设值。


复制常见问题解答

如何以可读的格式查看发布数据库的事务日志中标记为复制的事务的命令？

解答：

使用存储过程 sp_replshowcmds。若要查看当前未分发的事务（仍留在事务日志中、尚未发送到分发服务器的事务）。仅当客户端连接（包括当前连接）未在从日志读取已复制事务时才可以运行 sp_replshowcmds。因此，为运行该过程，需要停止日志读取器代理程序。在发布服务器上对发布数据库执行该存储过程。

说明 只有在解决与复制有关的问题时才应运行 sp_replshowcmds。

何时在订阅服务器上创建 MSreplication_subscriptions 表？

解答：

如果 MSreplication_subscriptions 表尚不存在，则分发代理程序在启动时创建该表。或者，如果订阅服务器上尚不存在 MSreplication_subscriptions 表，则 sp_addpullsubscription 存储过程创建该表。

对于每个代理程序分别调用哪些 .exe 或 .dll 文件？

解答：

下表列出代理程序名称和相关的文件。

代理程序名称 | 文件名称
日志读取器代理程序 | Logread.exe
快照代理程序 | Snapshot.exe
分发代理程序 | Distrib.exe
队列读取器代理程序 | Qrdrsvc.exe
合并代理程序 | Replmerg.exe

说明 快照代理程序、分发代理程序和合并代理程序还可以分别通过 Sqlinitx.dll、Sqldistx.dll 和 Sqlmergx.dll Microsoft® ActiveX® 接口来唤醒调用。

何时需要多个分发数据库？

解答：

在大多数情况下只需要一个。该功能适用于将复制操作和管理集中化并需要一个分发服务器作为许多发布服务器的宿主的用户。可以支持许多发布服务器对一个分发数据库。但是，在某些情况下出于管理目的，可能需要将逻辑复制应用程序分离到各个单独的数据库中。在这种情况下，使用多个分发数据库。多个分发数据库还可能通过减少争夺（在分发数据库中写入和读取时）而提供性能利益。

合并安装中的所有服务器可以具有相同的优先级吗？

解答：

发布服务器和订阅服务器永远不能具有相同的优先级。当添加订阅时 Microsoft SQL Server™ 2000 强制实现这一点。但是，如果有两个订阅（例如 S1 和 S2）具有相同的优先级，则将更改传播到发布服务器的第一个订阅入选。例如，如果 S1 和 S2 同时进行更改，第一个与发布服务器合并更改的订阅入选。本地订阅（本质上具有优先级 0）适用相同的规则（第一个到集线器的订阅入选）。

对 Internet 发布进行同步处理失败，错误信息为"无法传送架构信息"。为什么会出现这种情况？

解答：

有可能文件复制操作失败。默认情况下，请求订阅使用的代理程序使用为分发服务器和发布服务器设置的通用命名规则 (UNC) 路径打开文件。如果计算机不在局域网 (LAN) 上，UNC 将不起作用。可以在分发服务器处设置文件传输协议 (FTP) 服务器，并设置合并代理程序命令行包括 FTP 地址。为 Internet 启用的发布将使初始快照在应用于订阅服务器之前，由合并代理程序通过 FTP 下载到客户端计算机。

使用了禁用发布和分发向导，分发数据库的物理文件仍留在硬盘上。这是设计决定的吗？当重新安装复制时，将发生什么情况？

解答：

当删除分发时，SQL Server 尝试删除物理文件。但是，如果其它客户端正在使用分发数据库，或当删除文件时出现违反共享，那么文件实际上未从硬盘删除。如果物理文件未删除并且您试图再次安装分发，将为分发数据库使用新的名称。

如果创建一个发布，以一个表作为一个项目，然后更改已发布表的架构（例如，通过向表添加列来进行更改），那么新架构会应用于订阅服务器吗？

解答：

是。新架构将应用于订阅服务器，只要通过 SQL Server 企业管理器中的"复制发布属性"对话框或复制存储过程进行对已发布表的架构更改。不要在诸如 SQL Server 查询分析器的工具中使用 SQL ALTER TABLE 语句或使用 SQL Server 企业管理器可视化数据库工具进行已发布表的架构更改。使用这些工具对已发布表进行的更改不能传播到订阅服务器。

有关更多信息，请参见发布数据库中的架构更改。

查看 MSrepl_commands 中的命令有什么好方法？

解答：

在分发服务器的分发数据库上执行存储过程 sp_browsereplcmds。

当分发代理程序启动时快照代理程序尚未完成会怎样？

解答：

如果分发代理程序与快照代理程序同时运行，则这不是问题。但是，如果分发代理程序运行而没有可用的快照，它将关闭，并有一条消息表明尚无可用快照，除非已将它配置为连续运行。在这种情况下，分发代理程序将等待快照代理程序完成。

在 Windows 2000 Server 上，事务复制不可用。为什么会出现这种情况？

解答：

Microsoft SQL Server 2000 个人版和 Microsoft SQL Server 2000 Desktop Engine 只可用作事务复制订阅服务器。这些版本可以在任何平台中安装。

使用即时更新订阅时，更改了已发布表。为什么会出现这种情况？

解答：

在 SQL Server 2000 中，允许即时更新的发布中使用的表需要有一个 SQL Server uniqueidentifier 列。如果不存在这样的列，则在您创建发布时 SQL Server 2000 自动添加一列。如果您停止发布某个表，则可以除去 uniqueidentifier 列。应用程序将无变化地对带有 uniqueidentifier 列的表进行操作，其原因在于不必将该列包括在已限定的 INSERT、UPDATE 或 DELETE 语句中。

请参见

复制相关帮助


服务器常见问题解答

DBCC INDEXDEFRAG 和 DBCC REINDEX 之间有何区别？

解答：

与 DBCC DBREINDEX 或任何常规索引生成不同，DBCC INDEXDEFRAG 是一个联机操作，因此它不控制长期锁，该锁会阻塞查询或更新的运行。根据碎片的量，DBCC INDEXDEFRAG 可以比运行 DBCC DBREINDEX 快得多，因为对碎片相对较少的索引进行碎片整理会比生成新索引快得多。另一个优点是，与 DBREINDEX 不同，使用 DBCC INDEXDEFRAG 时索引始终可用。大量的碎片可以导致 DBCC INDEXDEFRAG 运行的时间比 DBCC DBREINDEX 长得多，这一点可能会也可能不会胜过该命令的联机功能所带来的优势。如果两个索引在磁盘上交叉存取事务，DBCC INDEXDEFRAG 将没有作用，原因是 INDEXDEFRAG 打乱了已有的页。若要改善页的聚集，请重建索引。

当创建表时，收到以下 2714 错误信息：

表的总行大小超过了每行的最大字节数 (8060)。将不添加超过最大字节数的行。

但是，表成功创建，并且插入数据没有问题。该错误信息意味着什么？

解答：

该错误信息表明表中具有可变长度列（如 nvarchar 或 varbinary），并且所有列的总最大长度之和大于 8,060 字节。如果每一行中数据的总长度不超过 8,060 字节，就仍可以向表中插入行。但是，如果数据超过 8,060 字节，则插入失败，返回以下错误信息：

服务器：信息 511，级别 16，状态 1，第 5 行
无法创建大小为 <rowlength> 的行，该值大于允许的最大值 8060。
语句已终止。

某用户定义函数返回架构绑定到数据库中的两个表的表。根据文档，在删除架构绑定选项之前无法更改引用的表。但是，我可以在这些引用的表中添加或删除列。难道这不应给出错误信息吗？

解答：

如果更改的是函数未引用的列。无法除去或更改表中涉及架构绑定的列，但可以更改不涉及架构绑定的其它列。例如，假定有一个架构绑定的表 table1，定义为有五个列：c1、c2、c3、c4 和 c5。如果函数只引用 c1 和 c3，则只有列 c1 和 c3 不能更改。列 c2、c4 和 c5 可以根据需要更改。

如何将数据库设置为单用户模式，并将访问限制为只供 dbo 使用？

解答：

在 SQL Server 2000 中，数据库不能同时为单用户模式和只供 dbo 使用模式。而以下可选选项可以通过使用 ALTER DATABASE 命令来使用：
  • ALTER DATABASE database SET SINGLE_USER。

    该命令限制用户只能逐个访问数据库。

  • ALTER DATABASE database SET RESTRICTED_USER。

    该命令限制只有 db_owner、dbcreator 或 sysadmin 角色的成员才能访问数据库。

  • ALTER DATABASE database SET MULTI_USER。

    该命令将数据库的访问权限返回其一般运行状态。

可以在一台计算机上同时运行 SQL Server 2000 的多实例吗？

解答：

是。有关信息，请参见多个 SQL Server 实例。

SQL Server 2000 中支持 DB-Library 应用程序吗？

解答：

是。但是，尚未针对 SQL Server 2000 增强 DB-Library。其 DB-Library 包含的功能与 Microsoft® SQL Server™ 7.0 DB-Library 相同。这意味着 DB-Library 应用程序只能连接到 SQL Server 2000 的默认实例，而无法连接到命名实例。它无法识别 SQL Server 2000 中提供的任何新特性。

需要使用多协议网络库启用加密吗？

解答：

否。SQL Server 2000 可使用安全套接字层 (SSL) 加密在应用程序计算机和数据库计算机上的 SQL Server 实例之间传输的所有数据。SSL 加密在高级套接字 Net-Library（Dbnetlib.dll 和 Ssnetlib.dll）内执行，适用于 SQL Server 2000 支持的所有计算机间协议。有关更多信息，请参见 Net-Library 加密。

为何我的 SQL 语句在用户定义函数外工作正确，但在该函数内工作不正确呢？

解答：

可能您的 BEGIN-END 块内包含具有副作用的语句，这在用户定义函数内是不允许的。函数副作用是对资源状态的任何永久更改，其作用域在函数以外。更改只可以对本地对象进行，如本地游标或局部变量。无法在函数内执行的操作的例子有：对数据库表的修改，对非函数本地游标的操作，发送电子邮件，试图进行目录修改和生成返回给用户的结果集。

如何在链接服务器查询中限定命名实例？

解答：

必须在四部分查询中使用方括号将多实例链接服务器的名称括起来。例如：

SELECT * FROM [myServer\sql80].northwind.dbo.customers


设置和安装常见问题解答

哪些操作系统支持 SQL Server 2000？

解答：

根据 SQL Server 2000 的版本和选择安装的组件不同，有不同的操作系统和其它软件要求。有关更多信息，请参见安装 SQL Server 2000 的硬件和软件要求。

安装 SQL Server 2000 的最低硬件要求是什么？

解答：

根据 SQL Server 2000 的版本和选择安装的组件不同，有不同的硬件要求。有关更多信息，请参见安装 SQL Server 2000 的硬件和软件要求。

可以在已安装有 SQL Server 7.0 的服务器上安装 SQL Server 2000 吗？

解答：

是。可以将 SQL Server 2000 作为一个命名实例来安装，同时运行 SQL Server 7.0 和 SQL Server 2000。

如何可以只安装 SQL Server 联机丛书？

解答：

可以在 SQL Server 的自定义安装中选择"SQL Server 联机丛书"选项。

如何只安装客户端和 SQL 事件探查器？

解答：

在自定义安装中，在"组件"下选择"客户端连接"和"管理工具"选项。在"管理工具"选项选中的情况下，选择"子组件"下的"事件探查器"选项。

当运行 SQL Server 安装程序时，为何收到一条消息请我关闭所有 ODBC 组件？

解答：

SQL Server 2000 安装程序安装 Microsoft 数据访问组件 (MDAC) 2.6，从而安装 ODBC 组件的较新版本。因此，使用 ODBC 的所有应用程序必须关闭，以便 MDAC 安装可以成功。使用 ODBC 的应用程序包括 Microsoft Internet Information 服务 (IIS)、Microsoft Systems Management Server、Microsoft Access 和 Oracle 数据库应用程序。

当在运行 Windows 98、Windows NT 4.0 或 Windows 2000 的计算机上安装 SQL Server 2000 时，需要安装 Windows 95 Winsock2 更新吗？

解答：

否。如果打算在运行 Windows 95 的计算机上安装 SQL Server 2000 客户端连接组件，则只需安装 Windows 95 Winsock2 更新。不管在什么平台上安装 SQL Server 2000，当安装过程中选择"安装 SQL Server 2000 先决条件"选项时，都将列出用于 Windows 95 的 Winsock2 更新。但是，该先决条件只适用于运行 Windows 95 的计算机，而不适用于运行 Windows 98、Windows NT 4.0 或 Windows 2000 的计算机。

可以安装 SQL Server 2000 附带的 MDAC 2.6 而不实际安装 SQL Server 2000 吗？

解答：

是。MDAC 2.6 具有独立的安装，可以在不安装 SQL Server 2000 的情况下进行安装。请运行位于 SQL Server 2000 光盘的 MSEQ\x86\ODBC 目录中的程序 Mdac_typ.exe。

有可能使 SQL Server 在运行 Windows 98 的计算机上自动启动吗？

解答：

是。在 SQL Server 服务管理器中，有一个选项"当 OS 启动时自动启动服务"，可以使用它来启动 SQL Server。

可以执行远程安装吗？

解答：

是。SQL Server 安装程序的"计算机名"屏幕使您可以选择本地计算机、远程计算机或虚拟服务器（在安装群集时）。在开始安装之前必须先在远程计算机上安装所有先决条件。

在客户端只安装客户端连接工具需要 Microsoft Internet Explorer 5.0 吗？

解答：

否。如果只想安装客户端连接工具，则不需要 Internet Explorer 5.0，但需要带有 Service Pack 2 的 Internet Explorer 4.01。请注意，如果打算安装管理工具或 SQL Server 2000 联机丛书，则需要 Internet Explorer 5.0。

如果已有不成功的安装，则需要进行哪些操作？

解答：

如果已有不成功的 SQL Server 2000 的安装，可以检查两个文件以帮助确定失败的原因。第一个文件是 Windows 目录中的 Sqlstp.log 文件。Sqlstp.log 文件提供有关安装程序当前所进行操作的详细信息，并包含安装过程中遇到的所有错误。查阅该文件将使您更好地理解安装程序在哪里失败以及为何失败。

在安装的配置部分，SQL Server 安装程序运行名为 Cnfgsvr.exe 的应用程序以配置 SQL Server。该应用程序启动 SQL Server，连接到它，并运行初始化安装脚本。该进程中遇到的所有错误写入 Sqlstp.log 文件。此外，应当检查 SQL Server 错误日志，该日志文件名为 Errorlog（无文件扩展名），默认情况下位于 Program Files\Microsoft SQL Server\Mssql\Log 目录。该错误日志将包含在安装程序尝试启动 SQL Server时 SQL Server 遇到的所有错误。

如果您无法确定安装程序失败的起因，请保存上面提到的文件，并致电 Microsoft 产品支持服务 (PSS) 与 SQL Server 支持专业人员联系，以帮助您解决问题。如果安装应用程序失败，它回滚对文件系统进行的所有更改（包括删除任何已复制的文件），并删除对注册表进行的所有更改。

如何重建注册表？

解答：

若要重建 SQL Server 注册表条目，请运行安装程序，选择"高级选项"，然后选择"重建注册表"选项。或者，还可以使用 Regrebld.exe 实用工具，该工具默认情况下位于 Program Files\Microsoft SQL Server\Mssql\Binn 目录。

在 SQL Server 安装程序完成以后，注册表使用 Regrebld.exe 自动重建。该实用工具创建所有 SQL Server 注册表条目的映象，文件名为 Mssql*.rbk。

运行带有 -Restore 选项的 Regrebld.exe 将注册表键值映象放入注册表中。如果键值存在，则替换它们。如果在初始安装之后更改了 SQL Server 安装，注册表键值的备份复本并不自动更新。如果安装后进行了更改，请手工运行 Regrebld.exe 以更新注册表键值信息。如果在不带任何参数的情况下运行 Regrebld.exe（与从"设置"菜单执行注册表重建的情况相同），则 SQL Server 程序图标也将重建。

为何 SQL Server 2000 不能安装在装有 Cyrix 芯片的计算机上？

解答：

Cyrix 芯片的早期版本不支持完整的 Pentium 指令集。SQL Server 2000 使用这些指令中的一部分，因此安装程序在对带有 Cyrix 芯片早期版本的计算机进行检测后拒绝安装 SQL Server。

可以在运行 Windows NT 4.0 Terminal Server 版的服务器上安装 SQL Server 2000 吗？

解答：

否。当前 Windows NT 4.0 Terminal Server 上不支持 SQL Server 2000，但 Windows 2000 Terminal Server 上支持 SQL Server 2000。


升级到 SQL Server 2000 常见问题解答解答

可以分离 SQL Server 2000 数据库并且将它附加到 SQL Server 7.0 服务器上吗？

解答：

是。SQL Server 7.0 数据库是和 SQL Server 2000 兼容的。但是，也存在例外。有关例外的更多信息，请参见升级 SQL Server 7.0 数据库（复制数据库向导）。

将 SQL Server 7.0 数据库附加到 SQL Server 2000 上会自动将 SQL Server 7.0 数据库升级到 SQL Server 2000 数据库，而且这个数据库将不能在 SQL Server 7.0 安装中使用。

可以分离 SQL Server 2000 数据库并且将它附加到 SQL Server 7.0 服务器上吗？

解答：

否。将 SQL Server 2000 数据库移动到 SQL Server 7.0 服务器的唯一方法是使用数据转换服务 (DTS)。

可以将 SQL Server 2000 数据库备份还原到 SQL Server 7.0 服务器上吗？

解答：

是。除了 master、model、msdb 和分发数据库以外，SQL Server 7.0 数据库与 SQL Server 2000 兼容。

可以将 SQL Server 2000 数据库备份还原到 SQL Server 7.0 服务器上吗？

解答：

否。将 SQL Server 2000 数据库移动到 SQL Server 7.0 服务器的唯一途径是使用诸如 DTS 和 bcp 之类的方法来传输数据，或使用链接服务器之间的查询。

可以将 SQL Server 6.5 数据库还原或附加到 SQL Server 2000 上吗？

解答：

否。将 SQL Server 6.5 数据库移动到 SQL Server 2000 的唯一途径是运行 SQL Server 升级向导。

升级需要 SQL Server 7.0 service pack 吗？

解答：

执行从 SQL Server 7.0 到 SQL Server 2000 的升级不需要任何服务软件包，尽管 Microsoft 产品支持服务 (PSS) 建议使用最新的服务软件包。

升级到 SQL Server 2000 需要哪种 SQL Server 6.5 service pack？

解答：

当在同一台计算机上将 SQL Server 6.5 升级到 SQL Server 2000 实例时，必须首先应用 SQL Server 6.5 版 Service Pack 5a 或更高版本。当在不同的计算机上将 SQL Server 6.5 升级到 SQL Server 2000 实例时，必须首先应用 SQL Server 6.5 版 Service Pack 3 或更高版本。

升级 SQL Server 6.5 数据库会花多少时间？

解答：

将 SQL Server 6.5 数据库升级到 SQL Server 2000 的过程中，有很多影响升级所需时间量的因素。SQL Server 6.5 数据库中的每个对象都必须在 SQL Server 2000 数据库中重建，而且必须传输每一行。根据每个数据库的复杂性，转换两个具有不同行数和对象的 10 GB 的数据库需要的时间很不相同。另外，硬件平台、进程数目、磁盘子系统和 RAM 的量对于升级所需时间也有很大影响。在安装过程选择"数据验证"选项使执行升级所需时间量增加到原来的两倍。下表显示了升级进程所需的典型时间。

数据库大小 | 估计升级需要的时间
400 MB | 小于 20 分钟
1 GB | 小于 1 小时
10 GB | 小于 4 小时
50 GB | 小于 12 小时
100 GB | 小于 24 小时

安装升级进程运行时，用户可以连接到 SQL Server 7.0 服务器吗？

解答：

否。执行安装升级时，要停止 SQL Server 7.0 服务器，然后再启动；所以用户无法保持连接。若要在用户保持连接的情况下执行升级，必须安装单独的 SQL Server 2000 实例，然后使用复制数据库向导将 SQL Server 7.0 中的每个数据库复制到这个 SQL Server 2000 实例中。复制数据库向导允许在 SQL Server 7.0 数据库升级进程中不必关闭任何服务器。

升级进程运行时，用户可以连接到 SQL Server 6.5 服务器吗？

解答：

否。在升级进程中，当编写对象脚本和解压缩数据时，SQL Server 6.5 服务器会停止并重新启动。当数据传输开始时，只有 SQL Server 2000 在运行，而且不能访问 SQL Server 6.5。

在执行升级前，应如何配置 SQL Server 6.5 服务器？

解答：

如果正在将现有的 SQL Server 6.5 服务器升级到另一台正在运行 SQL Server 2000 的计算机上，那么两台计算机都应配置为使用 MSSQLServer 服务的域用户名和密码。域用户帐户也应该属于两台计算机上的 Administrators 组。对于单机升级，本地系统帐户就足够了。如果跨不同的域进行升级，那么升级开始前必须在域间建立信任关系。

可以将来自两个或更多个 SQL Server 6.5 服务器的数据库合并到一个 SQL Server 2000 服务器上吗？

解答：

否。升级进程跟踪正在升级的服务器，而且只允许将来自一个 SQL Server 6.5 服务器的数据库进行升级。合并来自不同服务器的数据库可能会造成用户登录 ID、用户帐户和对象权限中的问题。如果想要合并来自不同的 SQL Server 6.5 服务器的若干个数据库，那么在升级到 SQL Server 2000 前请先将要合并的数据库全部移到一个 SQL Server 服务器上，然后验证应用程序工作是否正常。

可以只将一个或几个数据库升级到 SQL Server 2000 吗？

解答：

现有的 SQL Server 7.0 实例到 SQL Server 2000 的升级总是升级所有的数据库，因为它是用 SQL Server 2000 来代替 SQL Server 7.0。如果打算只升级 SQL Server 7.0 数据库中的一部分，那么请将 SQL Server 2000 安装为单独的实例并且使用复制数据库向导来升级数据库。有关更多信息，请参见升级 SQL Server 7.0 数据库（复制数据库向导）。

升级 SQL Server 6.5 时，可以将一个、一些或所有的 SQL Server 数据库升级到 SQL Server 2000。甚至可以在升级服务器上所有的数据库之前，转换单个数据库以进行测试或练习。Microsoft 建议同时转换服务器上所有的生产数据库以使潜在的问题减到最小。即使只打算转换现有 SQL Server 数据库的子集，也应该同时进行全部转换。

如果未同时升级所有的 SQL Server 6.5 数据库，则无法创建依赖其它数据库内容（包括视图、存储过程和触发器）的对象，只要所依赖的数据库或对象不存在。

如果已修改 SQL Server 6.5 model 数据库，使它包括附加的对象，那么应将它与所有其它 SQL Server 6.5 数据库同时转换，或在所有其它 SQL Server 6.5 数据库之后转换。对于因添加到 SQL Server 6.5 model 数据库中的非默认对象而在 SQL Server 6.5 数据库中创建的所有对象，在升级进程中将编写其脚本。

如果其它的 SQL Server 6.5 数据库是在 model 数据库转换之后升级的，那么它们将会包含基于 SQL Server 6.5 model 数据库的非默认对象。因为 SQL Server 2000 model 数据库在初始创建对象时，即将对象添加到新的 SQL Server 2000 数据库，所以创建脚本无法创建数据库中已经存在的任何对象。因此，通过将 model 最后转换，数据库结构中的任何更改都只应用于新的 SQL Server 2000 数据库。SQL Server 6.5 已转换数据库中的所有非默认对象将在这些数据库的转换进程中由脚本创建。

可以在同一台计算机上同时运行 SQL Server 2000 和 SQL Server 7.0 或 SQL Server 6.5 吗？

解答：

SQL Server 6.5 和 SQL Server 7.0 作为默认实例安装在服务器上，因此在某台特定的计算机上一次只可以运行这些版本中的一个。SQL Server 2000 支持在同一台计算机上同时运行多个 SQL Server 数据库引擎实例。如果将 SQL Server 2000 安装为命名实例，那么它可以与以前安装在计算机上的 SQL Server 6.5 或 SQL Server 7.0 的默认实例同时运行。如果将 SQL Server 2000 安装为默认实例，那么它会升级已经安装在计算机上的 SQL Server 6.5 或 SQL Server 7.0 默认实例。如果在运行 SQL Server 6.5 的计算机出现这样的情况，那么可以在升级后使用 vswitch 实用工具在 SQL Server 2000 默认实例和 SQL Server 6.5 默认实例之间切换。在升级 SQL Server 7.0 默认实例的情况下，升级后只有 SQL Server 2000 默认实例可以访问。

重要 每个 SQL Server 数据库引擎实例各有一套不为其它实例共享的系统及用户数据库。

有关更多信息，请参见处理 SQL Server 的实例和版本。

为何在 SQL Server 6.5 转换中收到如下错误信息？

@@servername 无效

解答：

如果正在升级的 SQL Server 6.5 服务器未命名，就会出现该错误信息。若要解决这些问题，请在 SQL Server 6.5 服务器上执行如下步骤：
  1. 在 isql 或 isql/w 中，运行如下查询以确保服务器具有名称：

SELECT @@servername

  2. 如果服务器没有名称，请运行如下存储过程以添加名称：

sp_addserver <server_name>, local

升级 SQL Server 6.5 服务器时，是什么原因导致如下错误信息？

无法打开默认数据库

查询 @@servername 出错

解答：

如果系统管理员的默认数据库还没有恢复，或者被标记为置疑，那么升级向导会生成这些错误信息。请先解决默认数据库的问题，然后再次运行升级向导。

升级运行 SQL Server 6.5 的服务器时，升级向导似乎停止响应或失败。为什么会出现这种情况？

解答：

如果转换进程中应用程序或服务具有对 SQL Server 6.5 服务器的开放式 ODBC 连接，那么它们可能不允许服务器完全关闭。如果没有收到运行 SQL Server 6.5 的服务器已经完全停止的验证，转换进程就不会进行到下一步。转换进程就好像停止了响应并且最终失败。若要解决这样的情况，请在执行升级前关闭所有可能具有 ODBC 连接或正在使用 SQL Server 的应用程序和服务。如果 SQL 事件探查器或 SQL 跟踪程序连接到运行 SQL Server 6.5 的服务器，就会看到类似的问题。尽管服务器并不会真正停止响应，但是先前快速进展的任务现在呈指数地减慢。

在什么地方可以查看升级进程中可能遇到的所有错误记录？

解答：

在升级进程中，将生成详细的日志并存储在 SQL 目录里。如果升级进程中出现了任何错误，将会在进程结束时看到一个对话框。这个对话框将会显示错误文件的内容。这个输出文件位于 Program Files\Microsoft SQL Server\MSSQL\Upgrade\<servername>_<date>_<time> 目录中。每个数据库都有自己的存储输出和错误文件的子目录，它们是在升级进程中生成的。


最好的练习

本节描述有关 Microsoft® SQL Server™ 2000 的建议和最好的练习。

  • DBCC CHECKDB 建议

  • 分布式分区视图建议

  • 全文检索建议

  • 多实例建议

  • 并行查询建议

  • 用户定义函数建议


DBCC CHECKDB 建议

在 Microsoft® SQL Server™ 2000 中，可以在用户使用数据库时运行 DBCC CHECKDB，因为 DBCC CHECKDB 在检查每个数据库表时在表上控制的锁的类型均更改。

在 SQL Server 7.0 和早期版本中，DBCC CHECKDB（依次在数据库的每个表上运行 DBCC CHECKTABLE 和 CHECKALLOC）常常在表上控制共享锁 (S)，因而阻塞了所有的数据修改语言 (DML) 语句。

在 SQL Server 2000 中，当检查表时 DBCC CHECKDB 在表上控制架构锁以防止元数据的更改，因而允许在正在检查的表上使用除任何数据定义语言 (DDL) 语句之外的 DML 语句。该变化对于决定何时运行 DBCC CHECKDB 提供了更大的灵活性，因为 DBCC CHECKDB 并不完全拒绝用户对系统的使用。

DBCC CHECKDB 是大量占用 CPU 和磁盘的操作。每一个需要检查的数据页都必须首先从磁盘读入内存。另外，DBCC CHECKDB 使用 tempdb 排序。

如果在 DBCC CHECKDB 运行时动态执行事务，那么事务日志会继续增长，因为 DBCC 命令在完成日志的读取之前阻塞日志截断。

建议在服务器负荷较少的时候运行 DBCC CHECKDB。如果在负荷高峰期运行 DBCC CHECKDB，那么事务吞吐量性能和 DBCC CHECKDB 完成时间性能都会受到影响。

要获得好的 DBCC 性能的一些建议
  • 在系统使用率较低时运行 CHECKDB。

  • 请确保未同时执行其它磁盘 I/O 操作，例如磁盘备份。

  • 将 tempdb 放到单独的磁盘系统或快速磁盘子系统中。

  • 允许 tempdb 在驱动器上有足够的扩展空间。使用带有 ESTIMATE ONLY 的 DBCC 估计 tempdb 将需要多少空间。

  • 避免运行占用大量 CPU 的查询或批处理作业。

  • 在 DBCC 命令运行时，减少活动事务。

  • 使用 NO_INFOMSGS 选项显著减少处理和 tempdb 的使用。

考虑使用带有 PHYSICAL_ONLY 选项的 DBCC CHECKDB 来检查页和记录首部的物理结构。当硬件导致的错误被置疑时，这个操作将执行快速检查。


分布式分区视图建议

随着分布式分区视图的实现，Microsoft SQL Server 2000 企业版允许高端用户缩放自己的服务器以满足大型 Web 站点和企业环境的需要。在选择创建联合服务器以及因此对表进行分区之前，需要确定分布式分区视图对整个环境是否是最好的。分布式分区视图的实现会使整个环境的管理和操作变得十分复杂。当前，可能需要实现这种提高群体功能的行为来改善环境的公司比例非常小。

分布式分区视图通过跨一组服务器对数据进行透明地分区，为数据库后端添加提高群体功能的功能。这种实现是为高端 OLTP 和 Web 站点设计的，以便通过单个 SQL 语句检索最少的数据（与决策支持 Analysis Services 即原来的 OLAP Services 相比）。下面的主题包括对可能使用分布式分区视图作为数据库实现的一部分的环境的高级考虑。

缩放到单个数据库服务器的极限

您是否已经缩放到单个数据库服务器的极限？缩放是指将资源添加到某一层，以使该层能够处理增大的工作负荷的进程。缩放可以按下面任一种方式实现：

  • 提高个体功能。通过使用功能更强大的计算机提高服务器的处理能力。

  • 提高群体功能。提高以模块化方式设计的系统的处理能力，例如在系统中添加一台或多台附加的计算机（也称为节点），使之变为一个计算机群集。

当实现分布式分区视图的联合服务器允许提高群体功能的环境模型时，应该首先考虑提高单个服务器的功能。应该认为分布式分区视图的解决方案只适用于已经全面提高个体功能并且此时正在设法提高数据服务层群体功能的数据库。很多已察觉的问题很可能通过实现提高个体功能的基本原理和为单个数据库服务器添加附加资源有效地解决。通过提高个体功能而不是提高群体功能，对环境的更改应是干扰较小的，因为它在允许单个服务器上有效的内存使用的情况下，将诸如应用程序代码更改和数据库设计问题之类的事项减到最小。

分布式环境的数据库和表设计

您的数据库和表的设计有助于分布式环境吗？

考察环境中当前的数据库和表设计。若要成功地对表进行分区，设计必须有助于这种类型的实现。目标是设计分区以便大多数查询在本地而非远程运行。诸如要对哪些表进行分区之类的考虑对于系统的整体性能是至关重要的。

例如，一个环境可能有 Orders、Customers 和 Items 表，其中 Orders 和 Customers 一致变化，而 Items 表保持相对稳定。例如，作为练习，如果在 Items 表上执行的 INSERT、UPDATE 或 DELETE 语句很少，那么可能希望跨所有分区克隆这些数据以使表和数据的群集一起检索。

可更新视图的分区是在唯一主键约束（水平分区）上完成的。因此，不仅要考虑如何划分表，还要考虑现在和以后数据的布局。考虑分区的列和会在该列上运行的查询类型。

在设计分区方案时，属于每个分区的数据必须非常明确。分区列不能更新，不能是标识，而且默认值和 timestamp 列不能作为键。在插入或删除新键时，可能会想要对键使用哈希运算值以获得每个分区相对平均的分布。将来，如果表需要重新分区，那么在修改视图和基础表架构，以及可能更改业务层的数据传送规则时会引起开销。

考察可能需要实现联合数据库设计的原因。如果具有极高命中率的数据库，它可能并不是想要分发的数据库或表。相反地，如果能够通过分发将与该服务器上的其它表查询相关的负荷减到最小，那么这也可能是有效的方法。建议将大多数 SQL 语句直接传送到必要数据比例很大的成员服务器上，从而最小化设计的分布特性。有关更多信息，请参见设计分区。

总体查询性能

您考虑过总体查询性能吗？在任何数据库设计和实现中，性能都是需要着重考虑的问题。当跨多个服务器分发数据时，查询远程服务器的性能会受到影响。应该对 OLTP 环境中实现的查询类型进行分析，以便得到特定查询涉及到的数据的基线。因为运行分布式查询时有一定程度的开销，所以该开销在某些情况下可能超出分发表获得的利益。分析查询以及它们生成的计划是非常重要的，以收集关于希望如何分发数据、是否需要分发数据和修改长期运行的查询的信息。删除到远程服务器的冗余行程以及能够缓存已编译计划和执行计划都能够提高总体性能；然而，远程行程越多（有些是分布式环境内在的），性能下降也就越多。

应用程序和业务层的设计

您的应用程序和业务层是如何设计的？设想多数时间可以通过连接到正确的服务器（具有所需数据的服务器或能够最有效地处理查询的服务器）来在整个环境的联合数据库层获得可观的性能。在能够将查询传送到适当的服务器的业务层逻辑内，系统范围的效率能够得到很大提高。随着数据传送规则的出现，这种传送逻辑可以在业务层或者甚至在数据层的表内实现。数据传送规则是能够用于将查询发送到包含适当数据的服务器的一系列规则。实现数据传送规则需要对环境内的应用程序或其它层进行更改的初始开销。有关更多信息，请参见设计使用联合数据库服务器的应用程序。

多个服务器的备份和恢复计划

如何跨多个服务器维护备份和恢复计划？大体来说，当将更多的服务器添加到企业时，环境的可管理性会变得更加具有挑战性。在分布式环境下工作时，SQL Server 2000 包含的备份和还原功能变得更加复杂。考虑在相同的逻辑点及时备份和还原跨越分区的数据库的需要。随着标记事务的实现，SQL Server 2000 使得这些还原更加容易。有关更多信息，请参见备份和还原联合数据库服务器和恢复到命名事务。

请参见

联合 SQL Server 2000 服务器

设计分区

创建分区视图

设计使用联合数据库服务器的应用程序

对数据分区

备份和还原联合数据库服务器

恢复到命名事务


全文检索建议

全文检索允许在 Microsoft® SQL Server™ 2000 表内对字符数据进行基于单词或短语的索引。全文检索由下面的基本组件组成：

  • 全文索引启用了全文目录的创建和填充，它们在 SQL Server 以外维护并且由 Microsoft 搜索服务管理。

  • 全文检索使用新的 Transact-SQL 谓词（CONTAINS、CONTAINSTABLE、FREETEXT 和 FREETEXTTABLE）来查询这些已填充的全文目录。
全文索引

如果正在对不到一百万行的表进行全文索引，那么几乎不需要进行性能优化。如果对大型 SQL Server 表（其中包含创建大型全文目录的上百万行）进行全文索引，那么这会持续进行大量的读取和写入活动，因此必须配置 SQL Server 和全文目录，以通过跨多个硬盘驱动器进行负载平衡来获得最优磁盘 I/O 性能。同时还需要考虑硬件配置、Microsoft Windows® 2000 或 Windows NT® 4.0 系统配置、SQL Server 2000 配置、全文目录和数据库文件的实际位置。

硬件考虑事项

  • 多个 CPU：一到四个 500 MHz Xeon III 处理器。

  • 内存：1 到 4 GB 的物理 RAM。

  • 具有几个通道的多磁盘控制器，或具有多通道的单磁盘控制器。

  • 磁盘 I/O 子系统：RAID0（没有容错保护的磁盘条带化）、RAID0+1 和 RAID5。

Windows 2000 或 Windows NT 4.0 系统配置的考虑事项

  • 如果在 Windows NT Server 4.0 上安装 SQL Server，那么 pagefile.sys 文件的大小需要设置为可用物理 RAM 量的 1.5 到 2 倍。在有较大 RAM 量的 Windows 2000 Server 上安装 SQL Server 时，可以不用考虑这一条。

  • Pagefile.sys 文件需要放置在它们自己的驱动器（RAID0 或 RAID0+1）上，最好在单独的控制器或至少是与共享控制器分离的单独通道上。

SQL Server 配置的考虑事项

  • 在大型表（超过一百万行）中进行完全填充后，考虑将新特性 Change Tracking 与 Update Index in Background 和 Update Index 对 Incremental Population 一起使用。有关何时使用 Change Tracking 对 Timestamp-based incremental 填充的更多信息，请参见维护全文索引。

全文索引和目录考虑事项

  • 全文索引或填充全文目录应该在系统活动较少时进行，通常在数据库维护窗口完成。

  • 将全文目录文件放置在它自己的磁盘控制器上，或有多个通道的单个磁盘控制器上单独的通道中。

  • 将数据库文件放置在与全文目录文件不同的独立的磁盘控制器上，或有多个通道的单个磁盘控制器上单独的通道中。

  • 具有四百万或两千万行的 SQL 表的全文索引可能要花费几个小时或几天来完成。考虑知识库文章 Q240867 中提供的选项："INF：如何移动、复制和备份 SQL 7.0 全文目录文件夹和文件"。
全文检索
  • 如果正在对不到一百万行的表进行全文检索，那么几乎不需要任何性能优化。（一百万行只是常规的分界点。）如果要对超过一百万行的表进行全文检索，请考虑适当的全文检索谓词（CONTAINS 与 CONTAINSTABLE 或 FREETEXT 与 FREETEXTTABLE）以及平均行数和查询超时的考虑事项。

  • 使用带有新的 top_n_by_rank 参数的 CONTAINSTABLE 或 FREETEXTTABLE 来限制返回的行数。top_n_by_rank 指定只返回以降序排列的前 n 个最高等级的匹配项。仅当指定了整数值 n 时应用。另外，应该考虑使用 TOP 子句来限制在 CONTAINTSTABLE 或 FREETEXTTABLE 的结果集中返回的行数。请查阅知识库文章 Q240833："FIX：通过支持 TOP 改善全文检索性能"，以获得更多信息。

    如果试图通过附加的 WHERE 子句限制从全文查询得到的结果，那么 WHERE 子句是在与 SQL 表结果联接 (JOIN) 之后而非之前应用。否则，结果集会不正确，因为合格的行会从结果集中省略掉，而没有任何对客户端的提示。若要限制全文检索查询的结果，请使用 CONTAINSTABLE 或 FREETEXTTABLE 谓词中的 Top_N_Rank 参数。

  • 如果通过 Web 或 Microsoft Internet Information 服务 (IIS) 接口使用 SQL Server 全文检索，并且正在搜索大型表（超过一百万行），那么当使用 CONTAINS 或 FREETEXT 谓词时，请考虑将 IIS 查询超时默认值增加 20 秒到 30 秒。

  • 如果在 SQL 查询中使用多个 CONTAINS 或 FREETEXT 谓词，并发现全文检索查询性能较差，请减少 CONTAINS 或 FREETEXT 谓词的数量，或使用"*"在查询中使用所有全文索引列。

    在全文查询中使用任何一个全文谓词时，例如 CONTAINS (pr_info, 'between AND king')，还可能遇到错误 7619："查询只包含忽略的单词"。单词"between"是一个忽略词或干扰词，即使带有 OR 子句，全文查询语法分析器也会将其视为一个错误。考虑将查询重新写为基于短语的查询并删除干扰词，或考虑知识库文章 Q246800 中提供的选项："INF：正确分析 FTS 查询中的引号"。还请考虑使用 Windows 2000 Server：它对索引服务的断词文件有一定增强。

  • 什么是 RANK 以及当与 CONTAINSTABLE 和 FREETEXTTABLE 谓词一起使用时如何确定 RANK？全文 RANK 值是根据包含唯一词的行出现的频率确定的。在确定返回行的 RANK 值中发挥作用的一个因素是这个唯一词在该行的全文索引列中出现的频率。另一个因素是唯一词在表中出现的总次数（这用于规范化概率）。结果集中返回的 RANK 值是互相关联的。因此，不可能将 RANK 值解释为百分比，或将 RANK 值分组为高/中/低范围。请将 RANK 视为一种对特定查询和结果集排序的方法。

当确定是在一个全文目录中包括多个 SQL 表，还是每个全文目录一个 SQL 表时，还有一些全文索引和检索的考虑事项。当考虑大型 SQL 表的这种设计问题时，在性能和维护之间应进行权衡，而您可能希望对您的环境测试这两种选项。如果选择在一个全文目录中有多个 SQL 表，则会因运行全文检索查询时间较长而带来开销，因为增量填充会强制所有其它 SQL 表的全文索引都放在该全文目录中。如果选择每个全文目录具有一个单独的 SQL 表，并对多个 SQL 表进行全文索引，就会引起维护单独的全文目录的开销（每个服务器总共只能有 256 个全文目录）。


多实例建议

在将 Microsoft® SQL Server™ 2000 的多实例安装在计算机上以前，应知道每个实例将使用的资源。每个实例都作为单个服务器工作，并只将资源让与操作系统，而不让与其它实例。例如，如果实例 1 需要更多内存以运行某查询，它不会请求实例 2 让出内存，而会请求操作系统让与内存。

如果在单 CPU 计算机上安装了多实例，且每个实例都在动态地处理查询，则预期查询将降低速度，因为两个实例将竞争 CPU 资源。在这样的环境中，大量消耗资源的查询（如包含带有 GROUP BY 或 ORDER BY 子句的 JOIN 的查询）可能需要两倍于在单 CPU 计算机上安装单个实例时运行相同的查询所需时间。该信息通过比较在有一个实例的单 CPU 计算机上执行查询和在有两个实例的相同的计算机上执行查询（两个实例同时运行相同的大量使用 CPU 的操作）得出。

在 RAM 低的计算机上安装多实例导致查询执行减慢。例如，在 64MB 的 RAM 的服务器上安装三个实例将显著降低查询速度。可以预期运行相同的查询大约多需要 15% 的时间。

运行多实例

请考虑将服务器内存切换到"固定内存大小"配置。该配置将防止一个实例占用全部可用内存。例如，可能希望将 RAM 的 80% 指派给生产服务器，而将 10% 指派给开发实例。

请考虑使用 SMP 计算机上的 affinity mask 选项将 CPU 指派给特定实例。有关更多信息，请参见向 CPU 分配线程。

一些示例测试结果（平均）

以下数字来自特殊测试。您的结果可能会有所不同。

计算机/实例 | 查询类型 | 执行时间（毫秒）
单 CPU 单实例 | 选中并复制到 | 420
单 CPU 单实例 | 带有分组依据和排序依据的选择 | 16683
单 CPU 单实例 | 联合查询 | 13590
单 CPU 单实例 | 带有分组依据的联接 | 4406
单 CPU 双实例 | 选中并复制到 | 1153
单 CPU 双实例 | 带有分组依据和排序依据的选择 | 24246
单 CPU 双实例 | 联合查询 | 16623
单 CPU 双实例 | 带有分组依据的联接 | 5076
双 CPU 单实例 | 选中并复制到 | 314
双 CPU 单实例 | 带有分组依据和排序依据的选择 | 9342
双 CPU 单实例 | 联合查询 | 9972
双 CPU 单实例 | 带有分组依据的联接 | 1289
双 CPU 双实例 | 选中并复制到 | 852
双 CPU 双实例 | 带有分组依据和排序依据的选择 | 18120
双 CPU 双实例 | 联合查询 | 12091
双 CPU 双实例 | 带有分组依据的联接 | 3121


并行查询建议

Microsoft® SQL Server™ 可以自动并行执行查询。从而优化多处理器计算机中的查询执行。不是使用一个 OS 线程执行一个查询，而是将工作划分为多个线程（受线程和内存的可用性限制），复杂查询可以更快、更有效地完成。

优化程序生成查询计划，并决定何时将并行执行查询。当进行决策时，它考虑以下事项：

  • 计算机有多个处理器吗？

  • 可用内存足以并行执行查询吗？

  • 服务器上的 CPU 负荷怎样？

  • 正在运行哪种类型的查询？

当允许 SQL Server 运行并行操作（如并行 DBCC 和索引创建）时，服务器资源变得紧张，当发生大量并行操作时会看到警告消息。如果关于资源不足的警告消息频繁出现在服务器错误日志中，则请考虑使用性能监视器来调查哪些资源可用，如内存、CPU 使用和 I/O 使用。

当服务器上有活动用户时请不要运行大量的并行执行的查询。

尝试在卸载期间执行 DBCC 和 INDEX 创建等维护作业。这些作业可以并行执行。

监视磁盘 I/O 性能。在性能监视器中观察磁盘队列长度，以进行升级硬盘或将数据库重新分发到不同磁盘上的决策。

如果 CPU 使用较高，请升级或添加更多的处理器。

影响并行查询的配置设置

以下服务器配置可能影响查询的并行执行：

  • 并行性的成本域值

  • 最大并行度

  • 最大工作线程

  • 查询调控器成本限制

请参见

并行度

高级查询概念

cost threshold for parallelism 选项

并行查询处理

查询优化建议

查询优化

查询优化（方法）

并行查询示例

执行计划的高速缓存和重新使用


用户定义函数建议

本节包含有关使用用户定义函数的建议和提示，包括有关标量和表值函数的信息、更改架构对函数的可能影响以及用以简化复杂函数的嵌套函数的使用。

标量函数的用途

当需要在代码中的多个位置进行相同的数学计算时，标量函数十分有用。例如，如果应用程序中遍布基于百分率、本金和年份的利息计算，则可以将它编码为可调用的函数，如下所示。

create function calc_interest ( @principal int , @rate numeric(10,5) , @years int )
returns int
as
begin
    declare @interest int
    set @interest = @principal * @rate * @years / 100
    RETURN(@interest)
end
使用系统函数作为构件块

系统函数可以用作用户定义函数的构件块。例如，如果需要计算某个数字的四倍值，使用 SQUARE 系统函数来得到该值，而不必从头编写整个函数。

将函数嵌套以划分和简化复杂函数

允许将函数嵌套；因此，将复杂函数划分为较简单的函数，并将这些较简单的函数一起使用以得到结果可能效果更好。将复杂函数划分为较小的函数的优点是，该代码可以在应用程序中的更多地方重新使用。

例如，假定需要计算一小块土地的面积，且输入单位可以是米或英尺，但面积必须始终以平方英尺为单位显示。可以将任务划分为两个函数，而不是编写一个函数来完成所有工作：

  • cnvt_meters_feet 进行从米到英尺的转换

  • calc_Area_ft 以英尺为单位计算面积

这样，便可以在代码的其它位置使用 cnvt_meters_feet 函数。

USE pubs
GO
CREATE FUNCTION cnvt_meters_feet ( @value numeric(10,3) )
RETURNS numeric(10,3)
AS
BEGIN
    DECLARE @ret_feet numeric(10,3)
    SET @ret_feet = @value * 3.281 ---1 Meter=3.281 Feet
    RETURN(@ret_feet)
END
GO
CREATE FUNCTION calc_area_ft ( @length numeric(10,3), @width numeric(10,3), @Unit char(2) )
RETURNS numeric(10,3)
AS
BEGIN
    DECLARE @area numeric(10,3)
    ---Check for unit, if meters(MT), convert it to feet(FT)
    IF @Unit = 'MT'
    BEGIN
        SET @length = pubs.dbo.cnvt_meters_feet( @length )
        SET @width = pubs.dbo.cnvt_meters_feet (@width )
    END
    ---Calculate Area
    SET @area = @length * @width
    RETURN ( @area )
END
GO
SELECT pubs.dbo.calc_area_ft ( 100.0, 50.0, 'MT') AS 'Area in Feet'
SELECT pubs.dbo.calc_area_ft ( 100.0, 50.0, 'FT') AS 'Area in Feet'
go
避免返回所有行的默认情况

当将函数的输入参数用作 WHERE 子句中的条件时，应为所有可能的值考虑返回的行数。

例如，如果使用条件"WHERE name like '@value%'"作为唯一条件，并依赖用户指定起始值，但用户未指定任何值，那么此 WHERE 条件转换为"WHERE name like '%'"，这将返回表中的所有行。这对于具有数百万行的表是十分有害的。为避免这种过多的结果集，可以实现一种默认检查机制，以便当未指定输入时只返回行的一部分。

考虑对架构更改的影响

如果函数中使用了"SELECT * FROM <table>"，应考虑函数创建后对架构更改的影响。如果函数未用 SCHEMA_BINDING 选项创建，则结果中不反映对架构的更改。

例如，如果在函数创建之后向表添加一个新列，并且该函数不是 SCHEMA 绑定的，则结果集中将不显示新列。如果在函数创建之后删除一个列，并且该函数不是 SCHEMA 绑定的，则结果集中已删除列处将显示 NULL 值。

使用子集来合并存储过程和用户定义函数

可以定义表值函数来返回宽的结果集。于是不同的用户可以使用结果的子集来检索数据。这可以用来合并多个存储过程或用户定义函数。

例如，可以创建如下函数：

  • FunctionA 返回 TableA 的 Col1、Col2、Col3、... Col10

  • FunctionB 返回 FunctionA 的 Col1、Col3。

  • FunctionC 返回 FunctionA 的 Col2、Col4。

现在不同的用户可以通过使用 FunctionB 或 FunctionC 来检索较小的子集。他们还可以通过使用简单的 SELECT 语句来选择 FunctionA 返回的列的子集。例如：Select Col10 from FunctionA。

消除临时表使用

多语句表值函数可用于消除中间结果处理的临时表使用。

何时将存储过程转换为表值函数

评估转换的原因；不要仅为了一致便将存储过程转换为表值函数。尽管预期会有某些改善，但是请仔细测试转换以确认例外情况，并检查是否有不希望的副作用。


将错误报告给您的主要支持提供者

如果无法解决某问题，请与您的主要支持提供者联系以获取帮助。每当收到服务器内部错误（例如断言或访问违规 (AV)）时，请与您的主要支持提供者联系。如果遇到操作系统或 I/O 错误，则很可能是硬件问题。更正硬件问题并还原数据库。当将错误报告给您的主要支持提供者时，请务必提供 Blackbox.trc 和 Sqldiag.txt 文件。

有关解决 9002 或 1105 与空间有关的错误的更多信息，请参见恢复疑难解答、错误 9002 和错误 1105。

将 sp_trace_create 与 TRACE_PRODUCE_BLACKBOX 选项一起使用以定义跟踪，并将跟踪信息追加到 \Data 目录中的 blackbox.trc 文件。一旦启动跟踪，跟踪信息将记录在 blackbox.trc 文件中，直到该文件的大小达到 5 兆字节 (MB)。然后跟踪创建另一个跟踪文件 blackbox_01.trc，且跟踪信息将被写入新文件。当 blackbox_01.trc 的大小达到 5 MB 时，跟踪将还原回 blackbox.trc。因此，始终会有不超过 5 MB 的跟踪信息。

sqldiag 实用工具还收集有关服务器版本和配置、.dll 文件版本、错误日志、扩展存储过程、操作系统、计算机版本、配置数据以及其它数据的信息，所有这些信息存入 Sqldiag.txt（默认位置为 \Mssql\Log）。另外，当执行 sqldiag 时，包含跟踪信息（包括不使用任何服务器）的两个跟踪文件 blackbox.trc 和 blackbox_01.trc（如果存在）将被复制到与 sqldiag.txt 相同的输出目录（默认位置为 \mssql\log）。

例如，发生错误的环境包括以下信息：

  • Microsoft® SQL Server™ 版本号（报告给错误日志或由 SELECT @@VERSION 返回）。写入错误日志的第一条消息提供 SQL Server 版本号。

  • DB-Library API 版本号（由 SQL Server 客户端网络实用工具报告）、ODBC 驱动程序版本（由 ODBC 驱动程序安装程序报告）或 OLE DB 提供程序信息。

  • 应用程序版本号（例如 SQL Server 企业管理器或 osql.exe）。

  • 操作系统版本号。

  • 硬件平台。

  • 生产或开发环境。

以下附加信息也有助于问题的诊断：

  • 消息编号、消息状态和完整错误信息文本。

  • 错误信息中包括的所有变量（数字、数据库对象类型或数据库对象名称）。

  • 产生消息的上下文（当时所运行的语句）。

  • 错误发生时登录到 SQL Server 的用户数。

  • 错误发生的频率。

  • 如果使用 SQL 查询分析器并且在"结果"窗格中看到的字符不超过 255 个，则单击"工具"菜单，然后单击"选项"命令。单击"结果"选项卡，然后增加"每列最大字符数"的值。

此外，检查错误日志，并且如果运行的是 Microsoft Windows® 2000 或 Microsoft Windows NT® 4.0，则检查 Windows 应用程序日志和 Sqlstp.log 文件（位于 \WINNT 目录）。可能还希望使用 SQL 事件探查器监视事件。

为有助于快速解决问题，可能会请您将 Sqldiag.txt 和错误日志通过电子邮件发送给您的主要支持提供者。

当提供这些信息时，请提供整个错误日志，包括日志从启动到最末尾显示的所有消息。请务必发送从启动时开始到该错误信息为止的所有信息。

尽管每次启动 SQL Server 时的启动消息大多是相同的，但启动过程中有时会出现其它消息，它们可以提供解决启动过程中或启动以后发生的问题的线索。如果启动过程中出现其它消息，请记下这些错误信息以帮助您的支持提供者诊断和解决问题。

请参见

使用 SQL 事件探查器进行监视


复制问题

总的来说，如果生成可复制的测试事例来演示错误，您的主要支持提供者用来解决问题的时间将缩短。这些测试事例可以小到未象预期那样操作的单个查询，大到遇到严重问题的相对复杂的代码片段。当测试事例较简单时，问题更有可能快速解决。

重要 提供测试事例提高了快速解决问题的可能性。如果某问题无法复制，则通常是无法解决的。

只要可能，请使用 pubs 或 Northwind 示例数据库创建测试事例。在很多情况下，创建测试事例可使您不必将大量数据发送给您的主要支持提供者。

为复制和诊断问题。可能会用到 SQL 事件探查器。SQL 事件探查器捕获有关事件的信息，并且根据需要重放这些事件。捕获和重放事件可有助于复制和诊断问题。

请参见

使用 SQL 事件探查器进行监视

Northwind 示例数据库

pubs 示例数据库


隔离连接问题

说明 有关诊断连接问题的即时帮助，请参见产品支持 Web 站点上的新的联机设置疑难解答。有关更多信息，请参见连接性相关帮助。

当某应用程序或工具在连接 Microsoft® SQL Server™ 2000 时有问题时，可能 SQL Server 或网络有问题，或二者都有问题。不管在其上运行的网络的具体情况如何，可以检查以下几项来隔离问题。请检查：

  • 对于运行 Microsoft Windows NT® 4.0 的服务器，可通过命名管道本地连接到 SQL Server。可以使用不带 servername 参数的 osql 测试本地命名管道连接。如果无法使用命名管道进行本地连接，则要么您使用的的登录无效，要么 SQL Server 有问题。

    对于运行 Microsoft Windows® 95 或 Microsoft Windows 98 的服务器，与 SQL Server 的本地连接使用共享内存 Net-Library。

  • 网络组件与网络协议中指定的要求是否匹配。

  • 默认客户端 Net-Library 是否适用于您的网络。可以通过 Microsoft SQL Server 程序组中的 SQL Server 客户端网络实用工具，确定并根据需要更改默认客户端 Net-Library。

  • 服务器上的网络连接信息是否适用于您的网络（如果所运行的是 SQL Server 并在命名管道之外还监听其它进程间通讯 (IPC) 机制）。可以使用 Microsoft SQL Server 程序组中的 SQL Server 服务器网络实用工具，确定并根据需要更改 SQL Server 所监听的网络。

  • 客户端工作站与服务器之间的网络连接是否建立。如果测试网络连接并确定连接未打开，请检查：
    • 硬件连接是否由于连接器或插头不牢固而停用。

    • 是否在客户端工作站和服务器上安装并运行了网络软件。

请参见

客户端网络实用工具

Net-Library 和网络协议

服务器网络实用工具


孤立会话

客户端可能会突然切断与服务器的连接，因而客户端进程无法告知网络正确关闭连接。这可能由于许多原因而发生，包括客户端的电源故障。Microsoft® SQL Server™ 2000 并不事先探测客户端连接的状态。而是依赖 Microsoft Windows NT® 在某连接需要终止或关闭时通知它。Windows NT 在 TCP/IP 的 KeepAliveTime 或 NetBios 的 SessionKeepAlive 持续时间内，监视连接并持续向 SQL Server 报告连接为活动的，该操作将影响命名管道客户端。SQL Server 继续令客户端拥有的锁保持活动，直到取消这些锁，或 Windows NT 终止或关闭该连接。

什么是孤立会话？

孤立会话是在客户端断开连接以后在服务器端保持打开的会话。

请不要将孤立会话与孤立用户搞混。当将某数据库备份并还原到另一个系统时，如果该系统中未配置相应的用户帐户，则创建孤立用户。有关孤立用户的更多信息，请参见孤立用户疑难解答。

何时发生孤立会话？

当客户端在终止时无法释放自己控制的网络连接时发生孤立会话。

当客户端干净地终止时，Windows NT 关闭连接并通知 SQL Server。如果 SQL Server 正在处理客户端命令，它将在结束该会话时检测已关闭的连接。崩溃的或终止自己的进程（例如从任务管理器）的客户端应用程序立即由 Windows NT 清除，很少会导致孤立会话。

当客户端计算机意外断电或在未执行正常关机的情况下关闭时，是出现孤立会话的一个常见起因。孤立会话还会由于挂起的应用程序而发生，此应用程序从未完全终止，从而导致死连接。Windows NT 不知道该连接已死并继续向 SQL Server 报告其操作为活动的。而 SQL Server 则保持会话打开并继续等待来自客户端的命令。

孤立会话会导致哪些问题？

打开的会话占据一个 SQL Server 网络连接。连接的最大数目由服务器客户端访问许可证 (CAL) 的数量限制，因此孤立会话可能阻止其它客户端的连接。

通常，更重要的问题是打开的会话使用服务器资源，并可能拥有打开的游标、临时表或锁。这些锁可能阻塞其它连接执行有用的工作，有时会导致锁的大量"堆积"。在严重的情况下，可能出现 SQL Server 停止工作的现象。

如何看出是否存在孤立会话以及哪些问题可能是由它导致的？

sysprocesses 表（或类似 sp_who 的存储过程）报告有关现有服务器会话的信息。如果某进程的状态是等待命令，而通过从 GETDATE() 减去 last_batch 得到的时间间隔比该进程通常所需的时间长，则可以识别可能的孤立会话。如果会话主机名称已经知道关闭，则该会话是孤立会话。

如何解决孤立会话？

Windows NT 周期性地检查非活动的会话以确保它们是活动的。如果某个会话不响应，则将它关闭并通知 SQL Server。检查的频率视网络协议和注册表设置而定。但是根据默认，Windows NT 每一个或两个小时只执行一次检查，视所用的协议而定。这些配置设置可以在注册表中更改。

若要关闭孤立的 SQL Server 会话，请使用 KILL 语句。然后该会话控制的所有资源便会释放。

如果孤立会话是问题所在，则可以在 Windows NT 中更改注册表设置来增加检查客户端的频率，以验证它们是否活动。更改这些设置影响其它应用程序连接。在进行更改前应考虑以下几点。

警告 请不要在运行 Microsoft Windows® 95 或 Microsoft Windows 98 的计算机上更改这些设置。

请考虑更改这些设置可能对系统中其它应用程序产生的影响，尤其是带有 Internet 连接的应用程序，如 Microsoft Internet Information 服务 (IIS) 或 Microsoft Internet Explorer。此外，请考虑对使用基于每数据包单位收费的连接的影响。

注意 建议不要编辑注册表；不适当或不正确的更改会导致严重的系统配置问题。只有富有经验的用户才可以使用注册表编辑器。有关更多信息，请参见 Windows NT 文档。

注册表条目可以从 HKEY_LOCAL_MACHINE 更改，方法是双击 SYSTEM，展开 CurrentControlSet，然后单击"服务"。

TCP/IP 的 KeepAliveTime
键： | Tcpip\参数
值类型： | REG_DWORD — 以毫秒为单位的时间
有效范围： | 1 — 0xFFFFFFFF
默认： | 7,200,000（两小时）
描述： | 该参数控制 TCP 尝试通过发送保持活动数据包来验证闲置连接仍完好的频率。如果远程系统仍可访问并正常工作，则其将确认保持活动传输。在默认情况下并不发送保持活动数据包；该功能可由应用程序在连接中启用。

命名管道的 SessionKeepAlive
键： | Netbt\参数
值类型： | REG_DWORD — 以毫秒为单位的时间
有效范围： | 60,000 — 0xFFFFFFFF
默认： | 3,600,000（一小时）
描述： | 该值决定某会话中保持活动传输之间的时间间隔。将值设置为 0xFFFFFFF 将禁用保持活动。

请不要将 Ping 超时设置为超过一分钟，因为这样 Ping 的网络 I/O 和 CPU 使用会变得过度。


命名管道客户端连接

下列过程描述当使用命名管道作为 IPC 机制时测试网络连接的方法。

测试命名管道连接

  • 在客户端工作站中的操作系统命令提示符处键入：

    net view \\servername

当使用 net view 时，servername 是想要连接的服务器的名称。

例如，若要检查命名管道客户端和名为 \\SEATTLE1 的服务器之间的连接，请在客户端键入以下内容：

net view \\SEATTLE1

如果连接已打开，则输出与以下类似：

共享资源位于 \\SEATTLE1

SQL Server

共享名称      类型            用途 备注

----------------------------------------------------

PUBLIC         磁盘                     公用文件

命令成功完成。

验证与服务器的命名管道的连接

  • 从命令提示符键入：

    net use \\servername\IPC$

当使用 net use 时，servername 是想要连接的服务器。

例如：

net use \\SEATTLE1\IPC$

命令成功完成

如果客户端工作站和服务器之间的连接打开，但仍无法连接到 Microsoft® SQL Server™ 2000，请使用 makepipe 和 readpipe 实用工具测试网络和本地命名管道。这些实用工具包括在 SQL Server 内以帮助测试网络命名管道的完整性。

makepipe 和 readpipe 实用工具在客户端和服务器组件安装过程中安装。这些实用工具对于它们所运行于的不同操作系统有不同的版本：makepipe 运行于 Microsoft Windows NT®；readpipe 运行于 Windows NT、Microsoft Windows® 和 MS-DOS®。务必为所测试的操作系统使用正确的版本。（运行于 Windows 的版本名为 readpipe。如果安装了 SQL Server 工具，则 readpipe 位于 \Msqql\Binn 目录；没有为它创建图标。）

测试网络命名管道服务的完整性

  1. 在服务器的操作系统命令提示符处键入：

    makepipe

    makepipe 实用工具返回以下信息：

    Making PIPE:\pipe\abc
read to write delay (seconds):0
Waiting for Client to Connect...

    SQL Server 正在等待客户端连接。

  2. 在客户端工作站的操作系统命令提示符处键入：

    readpipe /S server_name /D string

    当使用 readpipe 时，server_name 是 SQL Server 的网络服务器名称（makepipe 在该服务器上启动），而 string 是测试字符串。如果字符串包含空格，则必须括在双引号内。/S 与服务器名称之间无空格，/D 与字符串之间无空格。

    例如，若要连接到名为 myserver 的 SQL Server 安装，请键入下列内容之一：

    readpipe /Smyserver /Dhello

    readpipe /Smyserver /D"hello there"

    readpipe /Smyserver /D'hello there'

    前两个 readpipe 语句中指定的字符串处理方法相同。

    如果网络命名管道连接可以建立，则客户端工作站分别对前面的每个命令返回以下信息：

    SvrName:\\myserver
PIPE   :\\myserver\pipe\abc
DATA   :hello
Data Sent: 1 : hello
Data Read: 1 : hello

SvrName:\\myserver
PIPE   :\\myserver\pipe\abc
DATA   :hello there
Data Sent: 1 :hello there
Data Read: 1 :hello there

SvrName:\\myserver
PIPE   :\\myserver\pipe\abc
DATA   :hello
Data Sent: 1 : 'hello
Data Read: 1 : 'hello

    如果网络命名管道连接可以建立，则 makepipe 实用工具返回与以下类似的信息：

    Waiting for Client to Connect...
Waiting for client to send...  1

Data Read:
hello

Waiting for client to send...  2

Pipe closed

Waiting for Client to Connect...
Waiting for client to send...  1

Data Read:
hello there

Waiting for client to send...  2

Pipe closed

Waiting for Client to Connect...
Waiting for client to send...  1

Data Read:
'hello

Waiting for client to send...  2
Pipe closed

Waiting for Client to Connect...

    在此时，SQL Server 等待客户端进行连接。readpipe 实用工具可以从其它工作站运行。

  3. 当测试完成时，转到 makepipe 实用工具所运行于的服务器，按 CTRL+BREAK 或 CTRL+C。

如果结果与第 2 步中的不同，则网络命名管道服务不可用。如果使用命名管道作为 IPC 机制，则客户端无法连接到 SQL Server，直到有可用的命名管道。这些实用工具尝试打开和使用某个命名管道；它们不强迫命名管道连接。

请参见

配置客户端网络连接

makepipe 实用工具

readpipe 实用工具


TCP/IP 套接字客户端连接

以下过程描述当使用 TCP/IP 套接字作为 IPC 机制时测试网络连接的方法。

测试 TCP/IP 套接字连接

  • 在客户端工作站的操作系统命令提示符处键入：

    ping {ip_address | server_name}

当使用 ping 时，ip_address 是想要连接的服务器的 TCP/IP 地址，而 server_name 是要连接的服务器的名称。

例如，若要检查 TCP/IP 套接字客户端工作站和 TCP/IP 地址为 11.1.4.70 的服务器之间的连接，请在客户端工作站上键入以下内容：

ping 11.1.4.70

如果连接已打开，则输出与以下类似：

[1] 回音来自 11.1.4.70，往返时间 < 50 秒

本示例检查 TCP/IP 套接字客户端和名为 SEATTLE1 的服务器之间的连接：

ping SEATTLE1

如果连接已打开，则输出与以下类似：

[1] 回音来自 SEATTLE1，往返时间 < 50 秒

请参见

配置客户端网络连接


SQL Server 安装程序疑难解答

有关诊断安装问题的即时帮助，请参见产品支持 Web 站点上新的联机安装疑难解答。有关更多信息，请参见安装程序帮助。

SQL Server 安装程序的设计尽可能做到无问题；但是可能有某些情况会影响 Microsoft SQL Server 2000 的安装。最常见错误的诊断和解决比较简单。解决策略将涉及释放磁盘空间，关闭其它应用程序或重新启动计算机以解除共享文件的锁定。

若要避免问题，请务必复习准备安装 SQL Server 2000。如果打算安装 SQL Server 2000 故障转移群集，请在运行安装程序之前复习安装故障转移群集前的准备工作。

如果安装失败，安装程序会删除所有已安装组件。

在运行安装程序或安装其它 SQL Server 组件以前，务必：

  • 关闭所有服务。

    使用"控制面板"中的"服务"关闭 MSSQLServer 和 SQLServerAgent 服务。如果安装了全文检索，请关闭 MSSearch 服务。如果安装了 MS DTC，请关闭 MSDTC 服务。

  • 确保任务栏中的"SQL Server 服务管理器"图标已关闭。

    在"SQL Server 服务管理器"图标打开（或任何服务仍在运行）的情况下，试图运行 SQL Server 安装程序可能导致安装程序失败。

  • 删除所有 ODBC* 文件的只读特性。在运行 Microsoft Windows NT® 的计算机上，这些文件位于 \System32 目录。在运行 Microsoft Windows® 95 或 Microsoft Windows 98 的计算机上，这些文件位于系统目录中。

    如果您无法删除 ODBC* 文件的只读特性，SQL Server 提供一个对话框，使您可以重试 ODBC* 文件的更新。

  • 理解运行 Windows NT 的服务器需要命名管道。在 SQL Server 安装过程中清除命名管道并不妨碍命名管道的安装。因为运行 Windows NT 的服务器需要命名管道，所以没有方法可以在运行 Windows NT 的服务器上卸载命名管道。

请参见

安装程序帮助

设置和安装常见问题解答

安装程序疑难解答：检查清单


安装程序疑难解答：检查清单

  1. 读取错误信息。SQL Server 安装程序转换从操作系统接收的大多数错误代码。

  2. 在错误对话框显示的情况下，打开 \Windows 或 \WINNT 目录中的 Sqlstp.log。检查日志中的最后几个事件，查看产生错误信息以前是否发生了问题。

  3. 如果这是自定义安装，且未能正确安装的组件是全文检索 (MSSearch) 服务，则检查 \Temp 目录中的 Mssearch.log，看是否发生了问题。

  4. 继续完成错误信息对话框中的操作。某些错误信息只不过是警告。安装程序仍可能顺利完成。

  5. 如果安装程序失败，且您无法自己诊断和修复问题，请从 \Windows 或 \WinNT 目录制作 Sqlstp.log 和 Setup.log 的复本，如果安装了全文检索，请从 \Temp 目录制作 Mssearch.log 的复本。

说明 SQL Server 安装程序在安装有多个网卡或 SPX 的计算机上安装 MS DTC 时可能遇到问题。如果 SQL Server 安装程序停止响应，请检查 \Windows 或 \WinNT 目录中的 Sqlstp.log，看是否正在安装 MS DTC。如果这是问题所在，则请卸载一个网卡或 SPX，然后重试 SQL Server 安装程序。

如果试图在安装 Microsoft SQL Server™ 2000 以后从 Microsoft Windows NT® 4.0 Option Pack 安装 Microsoft® 事务服务器 (MTS)，可能遇到一个错误信息，指出无法安装 MTS；但 MTS 实际已安装。可以忽略该错误信息。

请参见

安装程序帮助

设置和安装常见问题解答


测试 SQL Server 2000 安装

在完成服务器安装以前，SQL Server 安装程序启动并连接到该服务器。当安装完成时，您可以自己测试该安装，并通过从服务器运行 osql 实用工具本地连接到它。

测试 SQL Server 2000 的安装（命令提示符）

  1. 启动 Microsoft® SQL Server™，方法是在命令提示符处输入：
    net start mssqlserver
  2. 采用输入方法连接到 SQL Server：
    osql /Usa /P<administrator password>

    如果已连接 osql，即出现 osql 提示符：

    1>

    如果未能连接 osql，则返回 ODBC 错误。

  3. 输入一个简单查询，例如
    SELECT @@SERVERNAME
GO

    osql 实用工具返回服务器名称，如本例所示：

    1> SELECT @@SERVERNAME
2> GO
-------------------------------
WOLFHOUND
(1 row affected)
1>
  4. 验证是否已选中了 SQL Server 2000 服务器，方法是输入：
    SELECT @@VERSION
GO

    osql 实用工具返回版本信息。

  5. 退出 osql 实用工具，方法是输入：
    exit


SQL Server 安装程序创建的信息文件

生成以下信息文件以定位安装过程中的任何问题。

Sqlstp.log

Sqlstp.log 文件位于 \Windows 或 \WinNT 目录。例如 C:\WinNT\Sqlstp.log。安装的配置部分中遇到的所有错误均写入该文件。

Setup.log

Setup.log 文件位于 \Windows 或 \WinNT 目录。例如 C:\WinNT\Setup.log。

Errorlog

最新的错误日志，位于目标安装目录的 \Log 目录。例如，错误日志的默认位置是 C:\Program Files\Microsoft SQL Server\Mssql\Log\Errorlog。对于命名实例，错误日志将位于 \Microsoft SQL Server\Mssql$<instancename>\Log\Errorlog。


无值守安装的错误代码

当运行 Microsoft® SQL Server™ 2000 企业版、SQL Server 2000 标准版、SQL Server 2000 开发版或 SQL Server 2000 个人版的无值守安装时，可能返回以下错误代码。

错误代码编号 | 错误代码描述
0 | 成功。
-1 | 常规错误。
-2 | 无效模式。
-3 | 所需数据未在 Setup.iss 文件中找到。
-4 | 可用内存不足。
-5 | 文件不存在。
-6 | 无法写入响应文件。
-7 | 无法写入日志文件。
-8 | InstallShield 无提示响应文件路径无效。
-9 | 非有效列表类型（字符串或数字）。
-10 | 数据类型无效。
-11 | 安装中的未知错误。
-12 | 对话框次序有误。这是一个常见错误，当某对话框在安装初始化文件 (Setup.iss) 中出现的次序有误时导致该错误。这可能由于 Setup.iss 创建过程中的系统问题而发生。
-51 | 无法创建指定的文件夹。
-52 | 无法访问指定的文件或文件夹。
-53 | 选择了无效选项。


SQL Server 升级向导疑难解答

SQL Server 升级向导的设计尽可能做到无问题；但是存在某些情况可能会影响从 Microsoft® SQL Server™ 6.5 版数据库升级到 SQL Server 2000。最常见的升级错误是在 SQL Server 2000 中创建对象失败。在许多情况下问题较简单，如磁盘空间用尽。在任何情况下，SQL Server 升级向导都创建详细的日志来指定问题。

请参见

升级到 SQL Server 2000


完成 SQL Server 升级向导

SQL Server 升级向导使用指定的选项执行服务器和数据版本升级。Microsoft® SQL Server™ 6.5 版在整个版本升级进程中保持原样。

在 SQL Server 升级向导进程中：

  • 针对 syscomments 的内容验证用户存储过程是否有不一致。

  • 验证所有登录、用户和权限。

如果 SQL Server 升级向导检测到任何问题，则出现一个对话框，显示以下文本：

One or more warnings have been logged. Please read the next screen carefully before you begin your upgrade.

有关特定错误的更多信息，请参见 \Mssql\Upgrade\<servername>_<date>_<time> 目录中的 *.err 文件。

"警告摘要"对话框显示在帐户的用户对象中找到的不一致。解决这些不一致后用户才能继续。该输出文件位于 \Mssql\Upgrade\<SQLServer_date_time> 目录。文件名与数据库名称和 ID"check65-<dbid><dbname>_err.out"（例如"check65-007mypubs_err.out"）相关联。如果用户在未修复列出的错误的情况下继续，则请检查相关文件中的对象、登录和无效权限。

如果存储过程已使用 sp_rename 重命名，则必须更改存储在 syscomments 中的源。除去并在 CREATE PROCEDURE 语法中使用新名称重新创建该过程。

请参见

升级到 SQL Server 2000

升级到 SQL Server 2000 常见问题解答解答


升级日志文件

每次运行 SQL Server 升级向导时，都在 \Mssql\Upgrade 目录（默认位置 C:\Program Files\Microsoft SQL Server\MSSQL\Upgrade）中创建一个子目录。子目录名由服务器名和当前日期与时间组成，以区分 SQL Server 升级向导的多次运行（例如 SQLCONV1_092198_151900）。

该子目录内为一些描述性命名的日志文件，描述每个升级步骤。其内还有每个已升级数据库（包括 master 数据库）的另一个子目录。每个数据库文件夹内为日志文件，指出该数据库内各种类型的对象的成功创建。以 .ok 结尾的文件指出该类型对象的所有实例已成功创建。以 .err 结尾的文件指出该类型对象至少有一个实例未成功创建。错误文件列出每个失败的对象创建语句，以及该对象未成功创建的原因。

指出问题的所有日志文件列在 SQL Server 升级向导的最后，以便于访问。

\WinNT 目录包含下列文件。

文件 | 描述
Sqlupgrade.ini | .err 文件的列表，将由脚本解释器显示
Upgrade.ini | 模板 .ini 文件，用于设置默认值和运行任务前和任务后应用程序

\Mssql\Upgrade 目录包含下列文件和目录。

文件 | 描述
Status.log | 脚本解释器正在执行的当前任务集的实时状态（有助于远程检查升级状态）
Check65.ini | 当"完成"页正在检查 SQL Server 6.5 数据库时发送给 Check65.exe 的附加命令提示符参数
Upgrade.tmp | 单击 SQL Server 升级向导中的"完成"按钮之前的 Upgrade.ini
Upgrade.ini | 升级的脚本文件
<6.5 server>_<date>_<time> 目录 | SQL Server 升级向导每次运行的对象目录

对象目录包含下列文件和目录。SQL Server 升级向导根据任务成功与否，使用 .out 或 .err 扩展名命名某些文件。

文件 | 描述
Layout.ini | 用于 SQL Server 升级向导和版式工具（向导的一个子组件）之间的通讯
~backup.ini | 用于在磁带升级中手工备份、删除和还原 SQL Server 6.5 数据文件
<dbid><db>.ini | 由 Layout.exe 用来高速缓存当前升级会话的用户设置的文件
Changedbo.sql.out / .err | 在 更改 DBO 任务已运行后传递的每条语句的列表
Check65 - <dbid><db>.out / .err | Check65.exe 的输出，在 SQL Server 升级向导的"完成"页中检查 SQL Server 6.5 数据库是否有不一致时创建
Check65 - <dbid><db>_err.out / .err | 来自 Check65.exe 的错误，在 SQL Server 升级向导的"完成"页中检查 SQL Server 6.5 数据库是否有不一致时创建
Cleantempdb.bat | 用于在成功升级后删除 SQL Server 2000 tempdb 文件
Cleantempdb.sql.out / .err | 成功升级之后删除 SQL Server 2000 tempdb 文件的输出
Convload1.sql.out / .err | 设置配置选项
Convload2.sql.out / .err | 添加登录、远程登录、本地组和其它对象
Createdb.sql.out / .err | 创建 SQL Server 2000 tempdb 和用户数据库
创建 Databases.out / .err | 创建 SQL Server 2000 tempdb 和用户数据库的输出
Dboptions.sql.out / .err | 设置和传递的数据库选项的状态
除去临时 tempdb files.out / .err | 除去临时 tempdb 文件成功
通过命名管道导出和导入 - <dbid><db>.out / .err | 在命名管道备份过程中将数据从 SQL Server 6.5 导出并导入 SQL Server 2000 成功
导出数据 - <dbid><db>.out / .err | 从 SQL Server 6.5 将数据导出到磁带备份成功
导入数据 - <dbid><db>.out / .err | 从磁带备份将数据导入 SQL Server 2000 成功
导出数据库对象 - <dbid><db>.out / .err | 从 SQL Server 6.5 导出对象成功
导出 Database Owners.out / .err | 从 SQL Server 6.5 导出数据库所有者成功
导出登录 - <#>.out / .err | 从 SQL Server 6.5 导出登录成功
从 Master.out / .err 导出服务器设置 | 从 SQL Server6.5 导出服务器设置成功
导出 SQL Executive Settings.out / .err | 导出 SQL Executive 设置成功
导入数据库对象 - <dbid><db>.out / .err | 将对象导入 SQL Server 2000 成功
导入登录 - <#>.out / .err | 将登录导入 SQL Server 2000 成功
从 Master.out / .err 导入服务器设置 | 将服务器设置导入 SQL Server 2000 成功
导入 SQL Executive 设置 - <#>.out / .err | 将 SQL Executive 设置导入 SQL Server 2000 中的 SQL Server 代理程序成功
Logininfo.sid | 集成登录映射
Loginmap.txt | 集成登录映射
标记数据库升级状态 - <dbid><db>.out / .err | 标记已升级数据库成功
标记数据库升级状态 - <dbid><db>.sql.out / .err | 标记数据库升级状态
修改 scripts.out / .err | 删除不打算在 SQL Server 2000 中创建的存储过程成功
Msdb6in.sql | 运行于 SQL Server 2000 的 msdb 集成登录
Pre60to7.sql | 将 msdb 从 SQL Server 6.5 升级到 SQL Server 2000
Pre65to7.sql | 将 msdb 从 SQL Server 6.5 升级到 SQL Server 2000
为升级准备 MSDB - <#>.out / .err | 为升级准备 msdb 成功
准备 SQL-DMO 用于 upgrade.out / .err | 为升级准备 SQL-DMO 成功
Replupd.out / .errreplupd_erro.out / .err | 更新复制设置成功
设置 Database Options.out / .err | 在 SQL Server 2000 中设置数据库选项成功
Upgrade Complete.ini | 列出每个升级任务和对象类型的升级选项和成功代码
Upgrade.log | 列出脚本解释器中的每个任务的成功代码、开始时间和停止时间，当脚本解释器退出或在任务失败后重新启动时创建
Upgrade.reg | 升级 DSN 的注册表条目，由升级进程中的许多 ODBC 应用程序使用
<dbid><db> 目录 | 每个已升级数据库（包括 master）的数据库特有的目录

数据库特有的目录包括下列文件。

文件 | 描述
<6.5 server>.master.bak（只在 master 数据库目录中） | 修改脚本任务运行前的存储过程脚本的备份
<6.5 server>.<db>.bnd.out / .err | 表列绑定
<6.5 server>.<db>.def.out / .err | 默认值
<6.5 server>.<db>.dr1.out / .err | 要在数据传输前创建的 DRI（聚集键）
<6.5 server>.<db>.dr2.out / .err | 要在数据传输后创建的 DRI（非聚集键）
<6.5 server>.<db>.fky.out / .err | FOREIGN KEY 约束
<6.5 server>.<db>.gr1.out / .err | 组
<6.5 server>.<db>.id1.out / .err | 要在数据传输前创建的索引（聚集索引）
<6.5 server>.<db>.id2.out / .err | 要在数据传输后创建的索引（非聚集索引）
<6.5 server>.<db>.LGN | 创建登录
<6.5 server>.<db>.prc.out / .err | 存储过程
<6.5 server>.<db>.prv.out / .err | 权限
<6.5 server>.<db>.rul.out / .err | 规则
<6.5 server>.<db>.tab.out / .err | 表
<6.5 server>.<db>.trg.out / .err | 触发器
<6.5 server>.<db>.udt.out / .err | 用户定义的数据类型
<6.5 server>.<db>.usr.out / .err | 用户
<6.5 server>.<db>.viw.out / .err | 视图

请参见

升级到 SQL Server 2000


服务器和数据库疑难解答

运行 Microsoft® SQL Server™ 2000 数据库的服务器可能会产生以下各个方面的错误：

  1. 数据库标记为置疑

  2. 警报

  3. 备份和还原

  4. 锁

  5. 作业

  6. 与 SQL Server 相关的 Microsoft Windows NT® 服务

  7. 与操作系统之间的交互操作

  8. 恢复


重置置疑状态

如果 SQL Server 因为磁盘驱动器不再有可用空间，而不能完成数据库的恢复，那么 Microsoft® SQL Server™ 2000 会返回错误 1105 并且将 sysdatabases 中的 status 列设为置疑。按下面的步骤解决这个问题：

  1. 执行 sp_resetstatus。

  2. 用 ALTER DATABASE 向数据库添加一个数据文件或日志文件。

  3. 停止并重新启动 SQL Server。

    用新的数据文件或日志文件所提供的额外空间，SQL Server 应该能完成数据库的恢复。

  4. 释放磁盘空间并且重新运行恢复操作。

sp_resetstatus 关闭数据库的置疑标志，但是原封不动地保持数据库的其它选项。

注意 只有在您的主要支持提供者指导下或有疑难解答建议的做法时，才可以使用 sp_resetstatus。否则，可能会损坏数据库。

由于该过程修改了系统表，系统管理员必须在创建这个过程前，启用系统表更新。要启用更新，使用下面的过程：

USE master
GO
sp_configure 'allow updates', 1
GO
RECONFIGURE WITH OVERRIDE
GO

过程创建后，立即禁用系统表更新：

sp_configure 'allow updates', 0
GO
RECONFIGURE WITH OVERRIDE
GO

只有系统管理员才能执行 sp_resetstatus。执行该过程后，立即关闭 SQL Server。

语法为：

sp_resetstatus database_name

下面的例子将关闭 PRODUCTION 数据库的置疑标志。

sp_resetstatus PRODUCTION

下面是结果集：

Database 'PRODUCTION' status reset!
WARNING: You must reboot SQL Server prior to accessing this database!
sp_resetstatus 存储过程代码

下面是 sp_resetstatus 存储过程的代码：

IF EXISTS ( SELECT * from sysobjects where name = 'sp_resetstatus' )
   DROP PROCEDURE sp_resetstatus
GO

CREATE PROC sp_resetstatus @dbname varchar(30) AS
DECLARE @msg varchar(80)
IF @@trancount > 0
      BEGIN
         PRINT 'Can''t run sp_resetstatus from within a transaction.'
         RETURN (1)
      END
IF suser_id() != 1
      BEGIN
         SELECT @msg =  'You must be the System Administrator (SA)'
         SELECT @msg = @msg + ' to execute this procedure.'
         RETURN (1)
      END
IF (SELECT COUNT(*) FROM master..sysdatabases
         WHERE name = @dbname) != 1
      BEGIN
         SELECT @msg = 'Database ' + @dbname + ' does not exist!'
         PRINT @msg
         RETURN (1)
      END
IF (SELECT COUNT(*) FROM master..sysdatabases
         WHERE name = @dbname AND status & 256 = 256) != 1
      BEGIN
         PRINT 'sp_resetstatus can only be run on suspect databases.'
         RETURN (1)
      END
BEGIN TRAN
      UPDATE master..sysdatabases SET status = status ^ 256
         WHERE name = @dbname
      IF @@error != 0 OR @@rowcount != 1
         ROLLBACK TRAN
      ELSE
         BEGIN
            COMMIT TRAN
            SELECT @msg = 'Database ' + @dbname + ' status reset!'
            PRINT @msg
            PRINT ''
            PRINT 'WARNING: You must reboot SQL Server prior to  '
            PRINT '         accessing this database!'
            PRINT ''
         END
GO

请参见

ALTER DATABASE

BEGIN TRANSACTION

COMMIT TRANSACTION

ROLLBACK TRANSACTION

启动、暂停和停止 SQL Server

sysdatabases

事务

事务构架

UPDATE


警报的疑难解答

如果在操作中遇到警报方面的问题，请阅读下面详细列出的解决方法。

警报未激发。
  • 确保 SQLServerAgent 和事件日志服务处于运行状态。

  • 确保该事件出现在 Microsoft Windows NT® 应用程序日志中。

    启动 Windows NT 的事件查看器。如果日志中没有事件，请检查日志的设置。在"日志"菜单上，单击"日志设置"选项，然后在"更改日志设置"的框中，选择"应用程序"选项。如果需要，可以将这些选项设为指定值。

    设置 | 值
    最大日志文件大小 | 最小值为 2,048 KB (2 MB)
    事件日志换行 | 如果需要，可以重写事件。

    说明 还要检查 SQL Server 错误日志；在 Windows 2000 或 Windows NT 的应用程序日志中写的事件也写入 SQL Server 错误日志。为了集中搜索问题发生的原因，可以比较 SQL Server 错误日志、SQL Server 代理错误日志和 Windows 2000 或 Windows NT 应用程序日志中的日期和时间。

  • 确保启用了警报。

  • 确保警报的历史值（例如，发生计数和最后一次发生值）在更改。

  • 确保计数器的值在最小值为 20 秒的定义阈值上下浮动。

    SQL Server 代理以 20 秒为一个间隔轮询性能计数器。

    重要 可以用高于 20 秒的频率来提高 SQL Server 的处理开销。

    如果计数器在仅仅几秒钟内就形成满足性能条件的峰值，那么 SQL Server 代理就很可能无法看到该峰值；而警报也就不会激发。

警报激发了，但是负责的操作员没有收到提示。
  • 检查操作员和提示信息，确保输入了正确的电子邮件地址、呼叫程序地址和网络发送地址。

  • 测试电子邮件、呼叫程序和网络发送地址。

  • 检查操作员的值勤调度。

  • 对任何电子邮件问题，检查 SQL Server 代理错误日志。
警报已经激发，但是没有及时提示。

出现这样情况的可能原因包括：

  • 警报的设置"两次响应之间的延迟"太高。

  • 警报响应非常复杂，要求很多操作员提示。

    说明 把提示发送给尽量少的操作员。例如，把提示发送给一组电子邮件地址，而不是提示几个单独的操作员。

在 Windows 95 或 Windows 98 服务器的 SQLServerAgent 错误日志里，出现了如下错误："在函数 ProduceEventsFromSS 返回错误 44'无法连接'后，公用事件系统开始重启动"。

这可能表明有非法注册的服务器信息。确保本地服务器上的注册服务器信息是正确的，而且注册的登录名是 sysadmin 固定的服务器角色的成员。

Windows 2000 或 Windows NT 应用程序日志迅速用同样的错误填充。
CPU 使用率很高。
警报响应的数量很大。

因为 SQL Server 代理同时依赖和监视 SQL Server，因此 SQL Server 代理会陷入激发同一个警报的无止尽循环之中。这通常会在 SQL Server 用尽基本全局资源并且已经在此事件上定义了警报时发生。

当增加的警报数量超过了 SQL Server 代理的警报处理速率时，会创建待办事项。

消除警报处理待办事项

  1. 增加"两次响应之间的延迟"设置中的时间量。

  2. 修正全局资源问题，防止反复出现的警报使用所有资源。

  3. 配置错误以便不再生成警报。

    重要 配置错误使其不生成警报的操作只能在注册表中执行。这样的解决方法应仅作为不得已的最后手段而采用。

  4. 清除 Windows NT 的应用程序日志，如果：未清除待办事项，而又不想等待SQL Server 代理来清除待办事项，或想要一个空的、未填充的 Windows NT 应用程序日志。

    注意 用"日志"菜单的"清除所有事件"选项来清除 Windows NT 应用程序日志，从错误日志中删除所有的事件，包括与 SQL Server 无关的事件。

配置错误使它不生成警报

  1. 启动注册表编辑器。

  2. 找到下列注册表键值：
    HKEY_LOCAL_MACHINE
\SOFTWARE
\Microsoft
\MSSQLServer
\SQLServerAgent
\NonAlertableErrors
  3. 键入错误号。

    非警报错误列表最大可以达到1,024 个字符，不包含空格，而且项目之间必须以逗号 (,) 分隔。在列表中 0 号以后出现的任何错误号，都会生成警报。例如，假定列表的组成如下：

    1204,0,100

    在本例中，只有错误 1204 不生成警报。因为在列表中错误 100 紧随错误 0，所以错误 100 也会生成警报。

重要 不要删除默认的非警报生成错误 — 错误 1204。错误 1204 定义了已知的各种会造成递归警报生成的条件。删除这个错误会阻碍解决递归警报生成的尝试。

请参见

定义警报

错误 1204

修改和查看警报


备份和还原的疑难解答

备份和还原数据库和事务日志时可能会遇到下面的问题：

  1. 使用 BACKUP 语句或 RESTORE 语句时，会发生语法错误。该错误表明数据库是在 Microsoft® SQL Server™ 6.5 版的兼容模式中。关键字 BACKUP 和 RESTORE 只在 SQL Server 7.0 或 SQL Server 2000 的数据库中有效。

    在使用 BACKUP 语句或 RESTORE 语句前，将 SQL Server 的兼容级别设为 80。有关更多信息，请参见错误 156。

  2. BACKUP 语句不能在创建或删除数据库文件的同时执行。

    冲突操作完成后，请重新发出备份操作。有关更多信息，请参见错误 3023。

  3. 备用数据库如果还没有恢复，就不能备份。

    在将操作切换到备用状态之前，使用主服务器的备份。有关更多信息，请参见错误 3036。

  4. 所还原的备份是有效的 Microsoft 磁带格式，但不是 SQL Server 的备份。

    要确定备份内容，使用 RESTORE HEADERONLY。有关更多信息，请参见错误 3143。

  5. 备份集是与正在还原的数据库同名的一个数据库备份。但是，正在还原的数据库是由与备份集中的数据库不同的 CREATE DATABASE 语句所创建的。

    重写现有的数据库或把备份集还原成不同的数据库名。有关更多信息，请参见错误 3154。

  6. 尝试使用逻辑设备，即非定义的备份设备。

    创建设备或使用 BACKUP 语句的 TAPE = 或 DISK = 语法。有关更多信息，请参见错误 3206 或错误 3209。

  7. 媒体家族跨越多卷。还原操作已经处理了指定卷上的数据。

    用尚未处理的卷来代替当前卷。有关更多信息，请参见错误 3227。

  8. 备份设备并不含有在 Microsoft 磁盘格式中的数据。有关更多信息，请参见错误 3242。

  9. 媒体家族跨越多卷。还原操作需要处理在错误信息中指定的卷号，但却发现了一个不同的卷号。

    为了继续还原操作，用错误信息中指定的卷号代替当前卷。有关更多信息，请参见错误 3247。

  10. 媒体家族跨越多卷。还原操作要处理的备份集从早于插入命名设备的卷开始。

    用包含目标备份集开始部分的卷替代当前卷。有关更多信息，请参见错误 3249。

  11. 还原操作已完全处理了命名设备上的媒体家族，而且现在已准备好重新使用该设备还原一个剩余的媒体家族。

    用尚未处理的媒体家族的第一卷替代当前卷。有关更多信息，请参见错误 3251。

  12. 创建备份集的备份操作没有成功完成。

    如果还原数据库备份，可以还原另一个数据库备份并且应用事务日志；或者，如果还原事务日志备份，还可以应用下一个事务日志备份。有关更多信息，请参见错误 3256。

  13. 命名设备上的卷并不属于与正在处理的其它卷一样的媒体集。

    对于磁带媒体集，删除有问题的卷，然后插入媒体家族的下一卷；或者，对于磁盘，则重新发出命令，仅命名相同媒体集的那些备份设备部分。有关更多信息，请参见错误 3258。

  14. 插入命名设备的磁带是当前媒体集的一部分，而且可能不会用作延续媒体。

    用可以重写的新磁带代替当前卷。有关更多信息，请参见错误 3263。

  15. 服务器太忙不能执行备份或还原操作。

    减少服务器负荷后，重试该操作。有关更多信息，请参见错误 3267 或错误 3627。

  16. 当恢复模型为 SIMPLE 时，有些语句不允许使用。使用 BACKUP DATABASE，或使用 ALTER DATABASE 更改恢复模型。有关更多信息，请参见错误 4208。

  17. 失败后还原数据库，必须从完整的数据库备份或完全的文件备份集开始。日志备份创建于第一个数据库或文件备份之前。

    在备份事务日志之前，执行完整的数据库备份。有关更多信息，请参见错误 4214。

  18. 还原操作在上一次还原和尝试应用的事务日志之间，发现了间隙。

    根据最初的创建顺序，应用事务日志备份。有关更多信息，请参见错误 4305。

  19. 数据库恢复后，将不能再执行其它的还原操作。

    重新启动还原序列，除了最后的 RESTORE 语句外，全面使用 NORECOVERY 选项。有关更多信息，请参见错误 4306。

  20. 不能将数据库恢复到当初建立当前日志备份时数据库的状态。在此之后，至少修改了一个文件。因此，恢复是不可能的，因为数据库会保持不一致的状态。

    把数据库恢复成最新状态或指定的时点。有关更多信息，请参见错误 4318。

  21. 由于备份文件最初是用一个扇区大小格式化的而且现在处于另一个扇区的设备上，因此不能使用。

    SQL Server 使用不含缓冲区的 I/O，要求扇区对齐。必须从具有相同扇区大小的磁盘还原备份集，或者通过网络，后者使用含有缓冲区的I/O。或者，可以在备份数据库时，指定一个 WITH BLOCKSIZE 子句。

请参见

备份和还原数据库

BACKUP

磁盘空间不足

恢复性能

保留关键字

服务器和数据库疑难解答

设置数据库选项

sp_addumpdevice

sp_dbcmptlevel

恢复疑难解答


孤立用户疑难解答

把数据库备份还原到另一个服务器时，可能会遇到孤立用户的问题。下面的方案显示并解决了这个问题：

  1. 通过执行 sp_addlogin，把登录 janetl 改名为 dbo。
    sp_addlogin 'janetl', 'dbo'
  2. 备份数据库。在本例中，备份 Northwind。
    BACKUP DATABASE Northwind
TO DISK = 'c:\mssql\backup\northwnd'
  3. 除去刚刚备份的数据库。
    DROP DATABASE Northwind
  4. 除去登录。
    sp_droplogin 'janetl'
  5. 还原备份的数据库。
    RESTORE DATABASE Northwind
FROM DISK = 'c:\mssql\backup\northwnd'

    janetl 登录不能访问 Northwind 数据库，除非允许 guest 登录。尽管 janetl 登录已经删除，它仍然（作为一个孤立行）显示在 sysusers 表中：

    USE Northwind
SELECT *
FROM sysusers
WHERE name = 'janetl'

解决孤立用户问题

  1. 用 sp_addlogin 添加一个临时登录。为孤立用户指定安全标识符 (SID)（从 sysusers）。
    sp_addlogin @loginame = 'nancyd',
    @sid = 0x32C864A70427D211B4DD00104B9E8A00
  2. 用 sp_dropalias 除去属于别名 SID 的临时别名。
    sp_dropalias 'nancyd'
  3. 用 sp_dropuser 除去原始用户（即现在的孤立用户）。
    sp_dropuser 'janetl'
  4. 用 sp_dropuser 除去原始登录。
    sp_droplogin 'nancyd'

请参见

备份和还原数据库

BACKUP

RESTORE

sp_addlogin

sp_dropalias

sp_droplogin

sp_dropuser


数据转换服务疑难解答

说明 有关诊断数据转换服务 (DTS) 问题的即时帮助，请参见产品支持网络 Web 站点的新的联机疑难解答者。有关更多信息，请参见数据转换服务的相关帮助。

下面是使用 DTS 设计器时可能生成的错误的有关信息：

  • 如果打开转换属性时，为没有权限访问 model 数据库的数据库用户创建了连接，那么该用户就会收到消息"未指定错误。服务器用户 '<用户名>' 不是数据库 'model' 中的有效用户"。出现这条消息是因为该用户不能看到提供程序类型信息。但是，错误只是信息错误，不会阻止用户创建转换。

如果在试图访问保存到 COM 结构化存储文件中的 DTS 包时，收到"无法找到指定文件"消息，那么请验证：

  • 是否正确指定了目录路径。

  • 是否正确设置了权限。

说明 有可能是文件损坏且 COM 结构不能删除。


锁定疑难解答

应用程序可能会遇到的与锁定有关的两个问题分别是死锁和阻塞。

死锁

死锁是一种条件，不仅仅是在关系数据库管理系统 (RDBMS) 中发生，在任何多用户系统中都可以发生的。当两个用户（或会话）具有不同对象的锁，并且每个用户需要另一个对象的锁时，就会出现死锁。每个用户都等待另一个用户释放他的锁。当两个连接陷入死锁时，Microsoft® SQL Server™ 会进行检测。其中一个连接被选作死锁牺牲品。该连接的事务回滚，同时应用程序收到错误。

如果死锁变成单个公用事件，而且它们的回滚造成过多的性能降级，那么就需要再次进行深入彻底的调查。使用跟踪标记 1204。例如，下面的命令从命令提示符启动 SQL Server，并启用跟踪标记 1204：

c:\mssql\binn\sqlservr -T1204

现在所有消息都会显示在启动 SQL Server 的控制台屏幕上和错误日志中。

使用分布式事务时，也可能发生死锁。有关解决分布式事务死锁的更多信息，请参见事务构架。

阻塞

任何基于锁的并发系统都不可避免地具有可能在某些情况下发生阻塞的特征。当一个连接控制了一个锁，而另一个连接需要冲突的锁类型时，将发生阻塞。其结果是强制第二个连接等待，或在第一个连接上阻塞。

在本主题中，术语"连接"是指数据库的单个登录会话。每个连接都作为系统进程 ID (SPID) 出现。尽管每一个 SPID 一般都不是单独的进程上下文，但这里常常用来指一个进程。更确切的说，每个 SPID 都是由服务器资源和数据结构（为给定客户单个连接的请求提供服务）组成。单个客户应用程序可能有一个或多个连接。就 SQL Server 而言，从单个客户机上的单个客户应用程序来的多个连接和从多个客户应用程序或多个客户机来的多个连接是没有区别的。不管是来自同一应用程序还是来自两台不同客户机上单独的应用程序，一个连接都可以阻塞另一个连接。

要消除死锁或阻塞问题，请与系统管理员联系。系统管理员应检查 sysprocesses 的 waittype、waittime、lastwaittype 和 waitresource 列，以便查看每个 SPID 在执行什么活动。

请参见

死锁

分布式事务

锁定

SET DEADLOCK_PRIORITY

sp_who

SQL Server：Lock 对象

sqlservr 应用程序

syslockinfo

sysprocesses

跟踪标记

了解和避免阻塞


有关死锁的疑难解答

在死锁中，由于多种线程在相互控制或其它线程控制的一套资源中等待，所以无法继续。死锁是循环相关的，最好通过标识相关链和有关资源中的参与者，然后为各种其它线程选择资源上中断死锁的线程来加以解决。

当死锁发生时，用户收到如下错误。

Transaction (Process ID xxx) was deadlocked on (xxx) resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

错误标识出事务在其上被锁定的资源。该资源可以是锁、并行（或通讯缓冲区）、等待线程或它们之间的组合。

要解决死锁，就必须终止循环中的一个参与者。选取死锁牺牲品时，Microsoft® SQL Server™ 2000 会查看所有的参与线程以及每个线程做了多少工作。通常，SQL Server 会选择工作量最小的参与线程作为死锁牺牲品。

使用 SQL Server 2000，可以确定参与死锁的资源，还可以用 SQL 事件探查器或跟踪标记 1204 解决锁的疑难问题。SQL 事件探查器是在 SQL Server 企业管理器中提供的一种图形工具。SQL 事件探查器提供基本的死锁检测信息。有关更多信息，请参见使用 SQL 事件探查器进行监视。

这节疑难解答集中在跟踪标记 1204 的使用上，它提供了允许对死锁状态进行详细分析的报告。

使用跟踪标记 1204

处于死锁状态时，跟踪标记 1204 在等待的线程、存在等待线程的资源和控制这些资源的线程间画出相关循环。

跟踪标记 1204 报告中的术语

尽管根据所涉及的资源，跟踪标记 1204 会返回不同信息，但是报告通常会包含如下术语：

节点：x

在死锁的链中表示项目号 (x)。

列表

锁的所有者可能是如下列表中的一部分：授权、转换和等待。

授权列表
列举资源的当前所有者。
转换列表
列举要把锁转换到较高级别的当前所有者。
等待列表
列举当前新锁对资源的请求。

SPID:x ECID:x

在并行进程情况下，标识系统进程 ID 线程。条目 SPID x ECID 0 表示主线程，而 SPID x ECID > 0 表示同一 SPID 的子线程。

语句类型

为 SELECT, INSERT, UPDATE 或 DELETE 语句，线程在这些语句上具有权限。

行号

发生死锁时，列出当前正在执行的批处理语句行。

输入 Buf

列出当前批处理中所有的语句。

模式

为线程请求、授权或等待的特定资源，指定锁的类型。模式可以是 IS（意向共享）、S（共享）、U（更新）、IX（意向独占）、SIX（与意向独占共享）和 X（独占）。有关更多信息，请参见SQL Server 中的锁定介绍。

RID

在对锁进行控制或请求的表中，标识单个行。

RID 在跟踪标记 1204 中，表示为 RID:db_id:file_id:page_no:row_no；例如，RID: 1:1:1253:0。

TAB

标识对锁进行控制或请求的表。

TAB 在跟踪标记 1204 中表示为 TAB:db_id:object_id；例如，TAB: 2:2009058193。

KEY

在对锁进行控制或请求的索引内，标识键范围。

KEY 在跟踪标记 1204中表示为 KEY:db_id:object_id:index_id；例如，KEY: 2:1977058079:1。

PAG

标识对锁进行控制或请求的页资源。

PAG 在跟踪标记 1204 中表示为 PAG:db_id:file_id:page_no；例如 PAG: 7:1:168。

EXT

标识扩展盘区结构。

EXT 在跟踪标记 1204 中表示为 EXT:db_id:file_id:extent_no；例如，EXT: 7:1:9。

DB

标识数据库锁。

DB 在跟踪标记 1204 中表示为如下方式之一：

  • DB:db_id

  • DB:db_id[BULK-OP-DB] 标识了备份数据库占用的数据库锁。

  • DB:db_id[BULK-OP-LOG] 标识了特定数据库的备份日志占用的锁。

IND

标识在索引资源上创建的索引占用的锁。

IND 在跟踪标记 1204 中表示为如下方式之一：

  • IND:db_id:object_id:index_id

  • IND:db_id:object_id:index_id[INDEX_ID] 表明锁在索引 ID 上。

  • IND:db_id:object_id:index_id[INDEX_NAME] 表明锁在索引名上。

APP

标识应用程序资源占用的锁。

APP 在跟踪标记 1204 中表示为APP:lock_resource；例如，APP:Formf370f478。

当 SQL Server 选取应用程序资源为死锁牺牲品时，该应用程序资源的所有者将不会得到先前描述的错误信息。相反，当 sp_getapplock 存储过程在该应用程序资源上执行时，应用程序所有者会获得返回代码"-3"。有关信息，请参见 sp_getapplock。

牺牲资源所有者

将 SQL Server 选择的特殊线程指定为中断死锁循环的牺牲品。选中的线程（以 SPID x ECID 0 标识）和所有现有子线程（以 SPID x ECID > 0 标识）将被终止。

下一个分支

表示来自死锁循环中涉及的相同 SPID 的两个或多个子线程。

当死锁涉及到平行线程时，各种子线程可能会在通讯缓冲区发生阻塞，而且一个线程会在等待别的子线程中结束。只有所有的其它线程都涉及死锁，才会发生死锁状态。下一个分支表示跟踪其它路径的死锁链。

有关跟踪标记 1204 死锁报告涉及的指定资源的更多信息，请参见涉及锁的死锁、涉及并行的死锁和涉及线程的死锁。

请参见

死锁

KILL

锁事件分类

使用 SQL 事件探查器进行监视

sp_lock

sp_who

跟踪标记


涉及锁的死锁

当死锁涉及锁时，跟踪标记 1204 报告有死锁在等待的资源、有效的且正在接受请求的锁模式以及参与相关循环的线程。

示例
有关涉及锁的死锁完整的 1204 报告

本例中，SPID 51 受到在表 2:2009058193 上请求一个独占的 (X) 锁的阻塞，因为 SPID 52 上已经有一个独占的锁了。在节点 2 中，SPID 52 受到表 2:1993058136 上请求一个独占锁的阻塞，因为 SPID 51 上已经有一个独占锁。

SQL Server 选择 SPID 52 作为死锁牺牲品来中断死锁，如牺牲品资源所有者条目所示。

Deadlock encountered .... Printing deadlock information

Wait-for graph

Node:1
 TAB: 2:2009058193 []           CleanCnt:1 Mode: X Flags: 0x0
 Grant List::
   Owner:0x1c3b5260 Mode: X        Flg:0x0 Ref:1 Life:02000000 SPID:52 ECID:0
   SPID: 52 ECID: 0 Statement Type: SELECT Line #: 1
   Input Buf: Language Event: select * from a (tablockx)

 Requested By:
   ResType:LockOwner Stype:'OR' Mode: X SPID:51 ECID:0 Ec:(0x1c657890) Value:0x1c3b51c0 Cost:(0/0)

Node:2
 TAB: 2:1993058136 []           CleanCnt:1 Mode: X Flags: 0x0
 Grant List::
   Owner:0x1c3b52e0 Mode: X        Flg:0x0 Ref:1 Life:02000000 SPID:51 ECID:0
   SPID: 51 ECID: 0 Statement Type: SELECT Line #: 1
   Input Buf: Language Event: select * from b (tablockx)

 Requested By:
   ResType:LockOwner Stype:'OR' Mode: X SPID:52 ECID:0 Ec:(0x1c593890) Value:0x1c3b5380 Cost:(0/0)
Victim Resource Owner:
 ResType:LockOwner Stype:'OR' Mode: X SPID:52 ECID:0 Ec:(0x1c593890) Value:0x1c3b5380 Cost:(0/0)


涉及并行的死锁

涉及并行的死锁总是涉及线程和锁资源。单独的并行不会导致死锁。跟踪标记 1204 报告的信息允许用户跟踪单独的并行工作线程并查找导致死锁的其它资源争夺问题。跟踪死锁时，把所有的并行线程（例如，具有相同 SPID 的线程）视为单个单元。

跟踪标记 1204 在循环中报告如下参与者：处理协调器、使用者和发生器。处理协调器是子线程的创建者和破坏者。发生器生成使用者等待的信息。

要解决涉及一个非并行 SPID AA 和并行 SPID BB 的死锁，请执行解决两个非并行 SPID 之间的死锁时用到的同样过程。

示例
A. 涉及并行的死锁

下面的例子说明了处理协调器、使用者和发生器在跟踪标记 1204 中是如何表示的。

Node:2
Port: 0x2b968100  Xid Slot: -1, EC: 0x2bba53b0, SPID:59 ECID: 0 (Coordinator), Exchange
Wait Type :e_etypeClose
Coordinator: EC = 0x2bba53b0, SPID:59 ECID: 0, Not Blocking
Consumer List::
Consumer: Xid Slot: 0, EC = 0x2bbda090, SPID:59 ECID: 2, Blocking
Consumer: Xid Slot: 1, EC = 0x2bbce090, SPID:59 ECID: 4, Blocking
Consumer: Xid Slot: 4, EC = 0x2bb60090, SPID:59 ECID: 1, Blocking
Consumer: Xid Slot: 5, EC = 0x2bbd4090, SPID:59 ECID: 3, Blocking
Producer List::
Producer: Xid Slot: 2, EC = 0x2bb64090, SPID:59 ECID: 6, Blocking
Producer: Xid Slot: 3, EC = 0x2bbbe090, SPID:59 ECID: 8, Blocking
Producer: Xid Slot: 6, EC = 0x2bbca090, SPID:59 ECID: 5, Blocking
Producer: Xid Slot: 7, EC = 0x2bbc6090, SPID:59 ECID: 7, Blocking
B. 带分支的死锁

跟踪标记 1204 报告有分支的死锁循环。例如，下面的引用显示了节点 6 的一个分支，其中一个线程在 RID 1:1:1253:0 上有独占的 (X) 锁，而 SPID 55 正在等待一个更新的 (U) 锁，SPID 60 刚好请求了另一个更新的 (U) 锁。

-- next branch --
Node:6
 RID: 1:1:1253:0                CleanCnt:5 Mode: X Flags: 0x2
 Wait List:
   Owner:0x98b9d7c Mode: U        Flg:0x0 Ref:1  Life:02000000 SPID:55 ECID:0
 Requested By:
   ResType:LockOwner Stype:'OR' Mode: U SPID:60

-- next branch --

Node:9
 RID: 1:1:1253:0                CleanCnt:5 Mode: X Flags: 0x2
 Wait List:
   Owner:0x98b9d7c Mode: U        Flg:0x0 Ref:1 Life:02000000 SPID:55 ECID:0
 Requested By:
   ResType:LockOwner Stype:'OR' Mode: U SPID:59 ECID:0 Ec:(0x9b09494) Value:0x98b9c5c Cost:(0/0)
-- next branch --

在涉及并行和线程的死锁中，一个线程可以等待多个线程。因此，跟踪标记 1204 报告中"下一个分支"的每个实例都代表等待下一个特定的线程。


涉及线程的死锁

在涉及线程的死锁中，跟踪标记 1204 提供了有关授予语句权限的线程和等待权限的线程的信息。

下面的例子中，这几个线程 (SPID 64、60、59、57 和 55) 有 UPDATE 语句权限，而 SPID 51 在等待列表中。

Node:1
 Granted thread list:
   SPID: 64 ECID: 0 Statement Type: UPDATE
   SPID: 60 ECID: 0 Statement Type: UPDATE
   SPID: 59 ECID: 0 Statement Type: UPDATE
   SPID: 57 ECID: 0 Statement Type: UPDATE
   SPID: 55 ECID: 0 Statement Type: UPDATE
 Wait thread list:
   SPID: 51 ECID: 0 Statement Type: UNKNOWN TOKEN

UNKNOWN TOKEN 表示线程当前没在执行批处理。


MS DTC 事务疑难解答

当事务结果无法确定时，分布式事务处于存疑状态。当 Microsoft 分布式事务处理协调器 (MS DTC) 准备好 Microsoft® SQL Server™ 中的事务，而涉及事务的一个或多个 MS DTC 进程无法从 SQL Server 到达时，就会发生这样的情况。

当如下消息显示在错误日志中时，SQL Server 用户可以检测到这样的情况：

<SQL Server detected a DTC in-doubt transaction for UOW <xxx>. Please resolve it following the guideline for Troubleshooting DTC Transactions.>

为了修正该问题，请标识事务中涉及的 MS DTC 进程，并且启动或还原与进程的连接。在通常环境下，此过程应修复这种情况，事务应自行解决问题。如果这一步还不能解决问题，请查阅 MS DTC 用户手册关于处理存疑的事务的特定信息。

SQL Server 可以解决存疑事务；但是，该选项只应在存疑事务所需的 MS DTC 进程无法解决问题这样极端的情况下才能使用。

在可访问工作单元 ID (UOW) 的存疑事务的条件下，用户可以通过使用指定的 KILL 命令语法，然后执行恢复数据库的步骤来解决 SQL Server 中的该事务。有关信息，请参见备份和还原数据库。

语法

KILL UOW WITH { COMMIT | ROLLBACK }

参数

UOW

标识工作单元 ID (UOW)，它代表存疑的 MS DTC 事务。UOW 是一个字符串，可以从 SQL Server 的错误日志中获得。有关监视分布式事务的更多信息，请参见"MS DTC 用户手册"。

WITH { COMMIT | ROLLBACK }

指定标识的工作单元 ID 应该是已提交的或已停止的。只有当 MS DTC 事务处于准备好的状态下（因而未加以解决），并且 MS DTC 处于恢复状态时，才可以强制提交或停止 MS DTC 事务。当 MS DTC 不可访问，或 SQL Server 从故障进行恢复时，MS DTC 称为处于恢复状态。

这个 KILL 语法只能用于解决处于准备好的状态下的存疑事务。有关终止其它分布式事务的信息，请参见 KILL。

重要 只有在 MS DTC 实用工具不可访问这种极端的情况下，才可以使用带有UOW WITH COMMIT 或 ABORT 选项的 KILL 命令。

请参见

分布式事务

KILL


MSSQLServer 或 SQLServerAgent 服务用户帐户疑难解答

如果在特定的用户帐户下启动 MSSQLServer 或 SQLServerAgent 服务遇到困难，可以：

  • 使用 Windows NT 用户管理器验证该计算机上的帐户具有"作为服务登录"权限。（二者都必须在本地计算机的安全上下文中而不是在域中进行指派。）

    如果服务不是被 Windows NT 本地管理员组中的成员启动，那么服务帐户必须有如下权限：

    • 完全控制主 Microsoft® SQL Server™ 目录（默认情况下是 \Mssql）。

    • 完全控制 SQL Server 数据库文件，无论存储位置在什么地方。

    • "作为服务登录"权限。确保所有登录时间在"登录时间"对话框中是允许的。

    • 完全控制 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer 及其下方的注册表键值。

    • 选择"密码永不失效"框。

    • 完全控制 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLServer 及其下方的注册表键值。

    • 完全控制 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib 及其下方的注册表键值。

    如果服务没有适当的权限，那么某些功能就无法实现。例如，要写入邮件槽，服务就必须有 Windows NT 域用户帐户，而不仅仅是本地系统上的账户，并且该账户具有网络写入特权。服务必须是有如下本地管理员特权的 Windows NT 帐户：

    • 创建不属于 sysadmin 固定服务器角色成员的 SQL Server 代理 CmdExec 和 Microsoft ActiveX® 脚本作业。

    • 使用 SQL Server 代理的自动服务器重新启动功能。

    • 当服务器空闲时，创建要运行的 SQL Server 代理作业。
  • 对于 MSSQLServer 服务，右击服务器，再单击"属性"，然后单击"安全"选项卡。在"启动服务帐户"框中输入适当的帐户和密码。如果密码不正确或已经改变，那么直到输入正确密码，才能启动服务。

    注意 如果只启动 MSDTC 服务，那么用"控制面板"中的"服务"来重新输入用户帐户密码。如果密码不正确或已经改变，那么直到输入正确密码，才能启动服务。如果有必要，可以使用"用户管理器"来更改帐户密码，然后用"控制面板"中的"服务"输入这项服务的密码。

  • 对于 SQLServerAgent 服务，先展开服务器，然后展开"管理"。右击"SQLServerAgent"，然后单击"属性"命令。在"服务启动账户"节的"常规"选项卡（默认值）上，输入帐户和密码。

  • 把遇到问题的帐户指派给另一个服务。如果在特定用户帐户下启动 MSSQLServer 或 SQLServerAgent 服务仍然存在困难，把该账户指派给别的服务（例如，后台处理程序服务），并验证该服务能否成功启动。如果还是不能，那么该帐户或者没有正确配置，或者不能被域控制器验证（例如，没有可用的域控制器）。


全文检索疑难解答

有关诊断全文检索问题的即时帮助，请参见产品支持网站的联机疑难解答者。有关更多信息，请参见全文检索帮助。

全文目录管理

错误"无法常规检索 SSPI 上下文"可能在重建或填充全文目录等操作时发生。当无效的服务主要名称 (SPN) 阻止 MSSearch 建立到 SQL Server 的 OLE DB 连接时，就会出现这样的错误。

从 Windows 2000 资源工具包中运用 SetSPN 实用工具查找和删除无效的 SPN，就可以解决这个问题。或者，在本地服务器上停止然后启动 SQL Server 服务。

若要列出当前注册的 SPN，从命令提示符键入如下内容：

Setspn -l SQLServerName

若要删除无效的 SPN，请从命令提示符键入如下内容：

Setspn -d SPN

说明 如果是在 LocalSystem 下运行，SQLServerName 参数的值可以是服务器名或没有域限定符的服务帐户名。

有关 SetSPN 实用工具的更多信息，请参见 Windows 2000 资源工具包文档。


操作系统疑难解答

在 Microsoft Windows® NTFS 分区中安装 Microsoft® SQL Server™ 2000 时，请确保 NTFS 文件权限允许读/写访问。否则，Microsoft Windows NT® 应用程序日志中（对于每一安装尝试）可能会出现此错误信息：

消息 17050：initerrlog：未能打开错误日志文件 'C:\MSSQL\log\ERRORLOG'。操作系统错误 error =5（访问被拒绝）。

请确保所有系统要求都得到满足，包括服务包。有关系统要求的更多信息，请参见安装 SQL Server 2000 的硬件和软件要求。

请参见

错误 17050


Windows 95 或 Windows 98 启动时 Internet 连接对话框的外观

如果在 Microsoft® Windows® 95 或 Microsoft Windows 98 中启用了远程连接，那么系统可能会在 Windows 启动或很多应用程序启动时，启动一个 Internet 连接。该操作有时称为自动拨号或自动连接，可通过将注册表键值 EnableRemoteConnect 设置为 N 禁用。

要进行该操作，用下面三行创建一个名为 DisbleAutoConnect.reg 的文本文件：

REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OLE]
"EnableRemoteConnect"="N"

把这项设置改为禁用远程连接，应该不会阻止任何正常的 Internet 活动。对于大多数系统，这是此选项的默认设置。然而，对于 DCOM 的一些功能启用远程连接是很必要的。有关更多信息，请参见知识库文章，HOWTO：Troubleshoot Run-Time Error '429' in DCOM Applicationshttp://support.microsoft.com/support/kb/articles/Q177/3/94.asp。

如果需要启用远程连接，那么创建第二个 REG 文件，名为 EnableRemoteConnect.reg，如下所示：

REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OLE]
"EnableRemoteConnect"="Y"

运行 EnableAutoConnect.reg 生成相应的设置，然后在不再需要自动连接时，运行 DisbleAutoConnect.reg 禁用该设置。


线程池处理

Microsoft® SQL Server™ 的错误日志可能会显示如下消息：

工作线程限制 255 已经达到。

这条消息是信息消息，并不表明系统有任何问题。

SQL Server 维护一个操作系统线程池，以便执行从客户端送达的成批 SQL 语句。在 Microsoft Windows NT® 上，如果服务器的 lightweight pooling 配置选项设为 1，则 SQL Server 不再维护线程，转而维护一个纤程池；纤程使用比线程更少的资源。使用线程池或纤程池，可以使 SQL Server 在同时执行多个 SQL 语句时优化处理时间分配。该池中的线程或纤程共同作为工作线程。有关更多信息，请参见线程和任务构架。

工作线程数是由服务器配置选项 max worker threads 控制的。默认值为 255 而且几乎不需要更改。

当从客户端收到一批 Transact-SQL 语句时，如果现有的工作线程空闲，就会分配它来执行这个批处理。如果没有空闲的现有工作线程而且工作线程数少于 max worker threads，那么就会分配一个新的工作线程。如果没有空闲的工作线程而且已经达到 max worker threads，那么新的批处理就要一直等到现有工作线程完成其当前批处理任务而空闲为止。当工作线程数达到 max worker threads 时，SQL Server 显示如下消息：

工作线程限制 255 已经达到。

对所有工作线程进行分配，并不意味着 SQL Server 的性能会降低。通常，新的批处理等待空闲线程只需要很短的时间。分配更多的线程可能会降低性能，因为增加的工作需要在线程之间协调资源。很多在生产状态运行的 SQL Server 系统都会达到这样的状态，而且以非常高的性能级别运行。

请参见

max worker threads 选项

设置配置选项

sp_configure


服务器的虚拟内存不足

当服务器上运行的应用程序请求的内存超过服务器上可用的内存时，Microsoft® Windows® 打开"服务器进程 — 虚拟内存用完"对话框，其文本如下所示：

系统的虚拟内存已经不足。请关闭一些应用程序。可以启动"控制面板"的"系统"选项，然后选择"虚拟内存"按钮来创建一个附加的页面文件或增加当前页面文件的大小。

使用"控制面板"的"虚拟内存"确保虚拟内存的数量至少是服务器上可用物理内存的 1.5 倍。Microsoft SQL Server™ 根据 Microsoft Windows NT® 系统的需要，动态地请求或释放内存。当 SQL Server 用默认的配置选项运行时，不会在 Windows NT 上产生这样的错误。有关更多信息，请参见配置虚拟内存。

如果虚拟内存设置适当，可以考虑进行如下操作：

  • 检查 SQL Server 的 max server memory 和 min server memory 配置选项未设置过高而占用绝大多数虚拟内存。有关更多信息，请参见配置选项（级别 １）。

    •

  • 检查服务器上的其它应用程序现在没有占用可用的虚拟内存。

    •

  • 使用 max server memory 和 min server memory 配置选项控制 SQL Server 请求的内存数量。
    •


资源空间不足

如果 Microsoft® SQL Server™ 配置选项关于可用资源的数量设置得太高，则 SQL Server 就会无法启动。例如，如果 max server memory 设置得太高，其它应用程序可能会花一些时间才能启动。

把配置选项重置成默认值或使用 sqlservr 应用程序的 -f 启动选项用最小配置模式启动 SQL Server。有关设置默认值的更多信息，请参见设置配置选项或 sp_configure (T-SQL)。

请参见

设置配置选项

sp_configure

sqlservr 应用程序


确定 SQL Server 何时会造成 Windows NT 蓝屏

Microsoft Windows NT® 可能会显示 STOP 屏幕暂停或者强制挂起，这时，控制台完全冻结且不再响应，当然这样的情况是比较少见的。这样的情况通常称为蓝屏。这种情况有时会在正在运行 Microsoft® SQL Server™ 的计算机上发生，或者在执行一个特定的 SQL Server 操作时发生，例如 bcp 实用工具、长时间运行的查询，等等。

大多数情况下，这种情况表明操作系统、设备驱动程序或硬件有问题，应同等地对其进行追踪。Windows NT 用户或内核模式进程隔离确保了用户模式应用程序问题不会造成操作系统停止响应。本节介绍这种情况的例外以及确定是否在系统或应用程序层对问题进行疑难解答及其方法。

有时，计算机强制挂起或蓝屏的原因可能是非屏蔽中断 (NMI) 错误。有时可以从声明 NMI、奇偶校验或 I/O 奇偶校验的错误代码看到这种情况。NMI 错误几乎总是硬件问题。通常，它们是由于内存失败造成的；但是，它们能发起其它硬件子系统问题，例如显卡。即使 NMI 错误只在某些 SQL Server 操作时发生，而且如果系统通过初始的硬件诊断，也仍要把它看作是硬件问题并同等地进行追踪。可能有必要使用专用内存 SIMM 测试设备，因为它常常能够发现瞬时的内存错误，而这些错误是基于软件的诊断所无法查到的。

进程以用户模式或内核模式存在于 Windows NT 上（有时称为监护人或特权模式）。在 Intel® x86 构架中，用户模式映射到 4 环保护系统的 3 环，而内核模式映射到 0 环。在 Intel 和当前最新的兼容处理器（包括 Pentium Pro 和 Pentium II）中，x86 构架的所进行的改进非常少。如 Alpha AXP 等处理器通常也有无特权和有特权模式两类。

内核模式是特权处理器模式，其中线程有权访问系统范围的内存（包括所有的用户模式进程的内存）和硬件。相反，用户模式是无特权的处理器模式，其中线程只能通过调用系统服务来访问系统资源。

用户模式进程不能访问内核模式内存，或访问其它用户模式进程的内存。这是与内核模式数据结构（例如页表）一起，通过处理器硬件强制实施的。

这个保护系统的结果是，用户模式应用程序在通常情况下不会停止响应或者产生蓝屏；要不然，就会导致 Windows NT 操作系统的失败。这样的问题应该主要在系统层进行追踪，例如操作系统、设备驱动程序或硬件问题。

当应用程序错误不能导致操作系统失败时，操作系统错误可能导致应用程序停止响应。这是因为常规规则：应用程序必须向内调用（向内核模式），但是操作系统可以随时任意地向外引用（向用户模式）。微内核影响的构架（例如 Windows NT）可能会反过来分派某种工作给用户模式的系统进程，而不是执行内核模式中的工作。无论如何，总体准则保持不变：处理器硬件强制进程上下文隔离，这样不管是一个进程在用户模式还是两个都在用户模式，都会阻碍一个进程导致另一进程中的失败。

如果一个用户模式应用程序在 Win32® API 调用中传递了无效参数，那么操作系统就要负责验证该参数。在非常罕见的情况下，传递无效参数可能会导致发生 Windows NT 蓝屏错误。但是无论如何，这都是操作系统的问题，应同等地进行调试和追踪。

请参见

bcp 实用工具


恢复疑难解答

Microsoft® SQL Server™ 每次启动，都会在整个系统和用户数据库执行恢复操作。本节的主题集中解决与恢复相关的性能和磁盘空间不足的问题。


恢复性能

恢复时间是由从上一次检查点之后做了多少工作和在数据丢失时所有活动事务做了多少工作共同决定的。Microsoft® SQL Server™ 使用名为 recovery interval 的配置选项设置 SQL Server 需要恢复数据库时每个数据库所需的最长时间（以分钟为单位）。这项 recovery interval 设置控制检查点的频率。对于联机事务处理 (OLTP) 系统（使用短事务的系统），recovery interval 是确定恢复时间的主要因素。

安装之后，SQL Server 将 recovery interval 设置为默认值零 (0)。只要 recovery interval 的设置是默认设置，而且没有长期运行的事务，则恢复每个数据库将大致需要花一分钟或更少的时间。如果长期运行的事务在数据丢失时是活动的，那么恢复时间就由回滚这些事物的效果花费的时间控制。

如果一个数据库的常规恢复需要远长于一分钟，recovery interval 设置是为零的值 (0)，而且没有需要回滚的长期运行的事务，那么请与您的主要技术支持提供者联系，以便解决这个恢复性能的问题。

恢复报告进度（根据数据库的虚拟日志文件）。在恢复操作开始时，从上一个检查点恢复分析和扫描日志。根据分析阶段，恢复操作估计在恢复过程中将会读取多少日志。读取的日志量用于报告恢复进度。

如果 recovery interval 的设置不再是默认值，那么数据库恢复会花费很多倍的时间来完成。例如，如果 recovery interval 变为 10，那么完成恢复所用的时间同 recovery interval 保持在默认值零 (0) 相比，大约要长十倍。

增加日志时，就需要使用庞大的日志来确保 SQL Server 有较短的启动时间。日志长度越小，SQL Server 的初始化时间越长。

如果长期运行的事务终止了，请让服务器完成回滚进程。如果关心回滚进程的长度，请询问系统管理员以确认活动是在服务器上发生的。在长期运行的事务回滚时终止服务器进程，会导致恢复时间增长。

如果当前有长期运行的事务而且其间发生了故障，SQL Server 开始恢复进程。这可能要花费一段时间。如果您认为当前恢复进程花费了太长时间而且它已经暂停了，请与您的系统管理员联系。

请参见

recovery interval 选项

设置配置选项

sp_configure


磁盘空间不足

恢复过程中，可能会发生服务器需要附加日志或数据空间，当然这种情况是比较罕见的。如果没有可用的附加空间，或者日志或数据文件不能增长，那么服务器出现如下反应：

  • 在 Microsoft® SQL Server™ 错误日志中报告错误信息 9002 或 1105。

  • 把数据库标记为置疑。

  • 使数据库脱机。

解决错误信息 9002，然后使数据库联机

  1. 释放含有相关数据库日志文件的任意磁盘驱动器上的磁盘空间。释放的磁盘空间使恢复系统可以自动地增长日志文件。

  2. 执行 sp_resetstatus 重置置疑状态。

  3. 通过执行 DBCC DBRECOVER（数据库）运行恢复操作。

    -或-

  4. 释放另一个磁盘驱动器上的磁盘空间。

  5. 把可用磁盘空间不足的事务日志文件移动到第一步所指的磁盘驱动器上。

  6. 执行 sp_detach_db 分离数据库。

  7. 执行 sp_attach_db 附加数据库，指向被移动的文件。

    -或-

  • 向置疑数据库添加一个日志文件，然后执行 sp_add_log_file_recover_suspect_db 以便在数据库上运行恢复操作。

解决错误信息 1105，然后使数据库联机

  1. 对于任意一个含有错误信息 1105 提到的文件组中文件的磁盘，释放其磁盘空间。释放磁盘空间使得文件组中的文件可以增长。

  2. 执行 sp_resetstatus 重置置疑状态。

  3. 执行 DBCC DBRECOVER（数据库）运行恢复操作。

    -或-

  4. 释放另一个磁盘驱动器上的磁盘空间。

  5. 将可用磁盘空间不足的文件组中的数据文件移动到第一步所指的磁盘驱动器上。

  6. 执行 sp_detach_db 分离数据库。

  7. 执行 sp_attach_db 附加数据库，指向被移动的文件。

    -或-

  • 向置疑数据库添加一个数据文件，然后执行 sp_add_data_file_recover_suspect_db 以便在数据库上运行恢复操作。

请参见

ALTER DATABASE

CREATE DATABASE

DROP DATABASE

错误 1105

错误 9002

recovery interval 选项

重置置疑状态

服务器和数据库疑难解答

设置配置选项

sp_add_log_file_recover_suspect_db

sp_attach_db

sp_attach_single_file_db

sp_configure


SQL Server 工具疑难解答

在 Microsoft® SQL Server™ 2000 中使用下面这些工具可能会遇到问题，本节包含对这些问题进行疑难解答的有关信息。

  • 索引优化向导

  • 带有 Exchange Server 的"SQL 邮件"

  • SQL 事件探查器

  • SQL 查询分析器

  • Web 助手向导

  • Transact-SQL 调试程序


索引优化向导疑难解答

Microsoft® SQL Server™ 2000 使用索引来优化搜索。在 SQL Server 6.5 或 SQL Server 7.0 上运行的索引也许并不是使用 SQL Server 2000 时的最好选择。请使用索引优化向导来寻找对于 SQL Server 2000 优化器最有效的索引。

向导需要用工作负荷或表来生成适当位置上的优化索引集建议。有关优化索引集的更多信息，请参见优化索引。

下面介绍一些通常可能会遇到的问题。

  • 通讯错误

    到服务器的连接中断或者服务器脱机。请参见连接到 SQL Server 对话框。

  • 清空工作负荷

    跟踪文件或脚本不包含 SQL 批处理或 RPC 事件。

  • 取消索引分析

    处理较大的工作负荷时，取消索引分析可以花几分钟或更多时间来完成处理。

  • 接受索引配置

    当接受为较大的工作负荷或大型数据库推荐的索引配置后，完成最后的处理会花几分钟或更长的时间。

  • 不存在的对象

    引用临时对象或其它当前不存在的对象的查询无法优化。

  • 文件错误

    索引优化向导无法打开文件。检查是否有其它用户或进程锁住了工作负荷文件，或者工作负荷文件是否已被移动或删除。

  • I/O 错误

    索引优化向导在写入工作文件时遇到了问题。增加放置系统临时目录的磁盘驱动器的可用空间。

  • 内存不足错误

    没有足够的内存运行索引优化向导。在除服务器以外的计算机上运行索引优化向导，或者增加操作系统分页文件的大小。

  • "缺少索引"错误

    多个用户同时优化数据库可能会导致"缺少索引"错误。建议一次只有一个用户优化数据库。

  • "添加索引视图"选项灰掉

    仅在 Microsoft SQL Server 2000 企业版中才支持索引视图。有关更多信息，请参见在视图上使用索引和创建索引视图。

下面是可能遇到的一些工作负荷问题。

  • 无法选择 SQL Server 跟踪表
    • 未连接

      如果收到连接错误，那么可能是到服务器的连接中断或服务器脱机。

    • 未列出我的表

      必须先创建服务器活动的 SQL 事件探查器跟踪，并且把它保存到文件或表中。跟踪必须事先创建。有关更多信息，请参见使用 SQL 事件探查器进行监视。

  • "我的工作负荷文件"问题

    必须先创建服务器活动的 SQL 事件探查器跟踪，并且把它保存到文件或表中。

  • 无法分析工作负荷

    跟踪文件含有 SQL 批处理或 RPC 事件，但是都没有引用所选数据库中的对象。


带有 Exchange Server 的 SQL 邮件疑难解答

通常，启动"SQL 邮件"会话或从带有 Microsoft® Exchange Server 的"SQL 邮件"发送邮件时发生的错误，可以归入如下几类：权限问题和 Exchange 客户端建立问题。有关更多信息，请参见 SQL 邮件。

要对有关"SQL 邮件"的问题进行疑难解答，请完成如下步骤：

  1. 使用 MSSQLServer 服务会用到的用户帐户登录到 Microsoft Windows NT® 4.0 或 Windows® 2000 上。该用户帐户必须是本地计算机的管理员和域帐户。

  2. 确认 Exchange Server 客户端 (Exchnge32.exe) 或 Microsoft Outlook™ 客户端 (Outlook.exe) 能够连接到 Exchange Server 而且能够发送电子邮件。如果使用 Outlook，确保 Outlook 安装时选择了"用于企业或工作组"选项。

  3. 确认所用的 Exchange Server 配置文件中没有个人消息存储 (.pst)。Exchange Server 配置文件的名字不应超过 32 个字符。

  4. 在"服务"选项卡上，确认 Microsoft Exchange Server 和个人通讯簿是唯一可用的服务，然后单击"发送"选项卡。确认"发送到"框中选定的内容是 Exchange Server 中的邮箱，它应该有一个类似于"邮箱 -<友好的用户名>"的名字（其中<友好的用户名>是在第一步中登录到 Windows NT 4.0 或 Windows 2000 的用户名）。

  5. 要运行带有 Exchange Server 的"SQL 邮件"，MSSQLServer 服务必须在第一步中登录的同一个用户帐户下运行。在"控制面板"中，双击"服务"，选择 MSSQLServer 服务，然后单击"启动"。

  6. 确认"SQL 邮件"的配置文件是否正确。在 SQL Server 企业管理器中，展开服务器，展开"支持服务"文件夹，选择"SQL 邮件"，然后用右键单击。单击"属性"，然后在"常规"选项卡上，确保"配置文件名"框中指定的配置文件名正确。（事件探查器名必须与第三步中用到的配置文件名匹配。）单击"测试"，验证配置文件设置正确。

  7. 如果"SQL 邮件"无法启动（例如，显示错误信息指出配置文件不正确），请检查设置确保未将 Outlook Express 设置为默认的电子邮件客户程序。在"控制面板"中双击"Internet"选项。在"程序"选项卡中，验证 Outlook Express 不在电子邮件组合框中。如果不得不将默认的电子邮件客户程序更改为 Outlook Express 以外的客户程序，那么，可能需要先验证"SQL 邮件"能够用邮件配置文件启动，然后再停止并重新启动 MSSQLServer 服务。

在有些情况下，邮件的配置文件可能会损坏而且"SQL 邮件"将无法使用它。要更正这个问题，需要把配置文件复制到另一个文件名下，或重新创建配置文件。

如果用来启动 Microsoft SQL Server™ 的帐户没有权限访问 Exchange 服务器，那么就无法使用"SQL 邮件"。执行 xp_cmdshell 来测试 SQL Server 对 Exchange Server 的访问权限，它执行与"SQL 邮件"相同的权限。使用下面的命令测试对服务器的连接，假定 Exchange Server 位于名为"MyServer"的计算机上。

xp_cmdshell "NET USE \\MyServer\IPC$"

如果这个命令无法正常执行，说明第三步未正确完成。


SQL 事件探查器疑难解答

下面是使用 SQL 事件探查器时，可能遇到的问题：

  • 设置筛选时，无条件限制的筛选包括了 SQL 事件探查器的输出中所有的项。数据列上的筛选不会应用于未填充那个数据列的事件类。

  • 因为 SQL 事件探查器存储过程在服务器上（而非客户端上）保存跟踪队列定义，所以 SQL 事件探查器不能编辑或启动最初用该存储过程创建的跟踪。

  • 由于安全原因，如果批处理中包含的存储过程带有密码参数，则不进行跟踪。取而代之的是生成一个事件，用注释代替批处理文本。

  • 在 Microsoft® Windows® 95 和 Windows 98 中，直到 SQL 事件探查器关闭又重新启动后，才接受客户端的配置更改。

  • 如果远程计算机上的文件不可用，那么在访问那些文件时，SQL 事件探查器会带来一些问题。

下面是重放 SQL 事件探查器跟踪时的常见问题：

  • 当跟踪捕获到的登录和用户在目标数据库中不存在时，就可能会发生重放的错误。如果登录和用户在数据库中存在，那么它们必须具有与源（被跟踪的）数据库中相同的权限。

  • 当目标数据库的数据库 ID (DBID) 不同于跟踪中捕获的 DBID 时，可能会发生重放错误。要更正此问题，可将源（被跟踪的）服务器的 master 数据库备份还原到目标服务器上。然后，还原用户数据库。另外一个办法是，把 DBID 数据列从跟踪和默认数据库（设置为跟踪中捕获的每个用户的目标数据库）上删除。

  • 尝试重放数据库跟踪时，如果它不同于源（被跟踪的）数据库的状态，则可能发生重放错误。如果数据丢失或更改，更新操作可能会失败。

  • 如果重放跟踪所包含的并发连接超过重放计算机能够管理的并发连接数，那么系统性能可能会降低。这时，如果跟踪中捕获了这些数据列中的一列或多列，那么可以用"应用程序名"、"SQL 用户名"或其它筛选筛选该跟踪。

  • 重放含有 KILL 语句的捕获事件可能会导致意外的重放结果；终止的 SPID 可能不存在；或者如果存在，那么该 SPID 可能被指派给另一个用户或连接，而不是最初跟踪的那一个。

  • 当以最快速度重放跟踪文件时，SPID 可能会阻塞，造成重放进程的停滞。为了释放阻塞的 SPID 并且使跟踪可以继续，请取消正在阻塞的 SPID。


SQL 查询分析器疑难解答

下面是使用 SQL 查询分析器执行脚本时，可能遇到的问题：

  • 对于引用了在 SHOWPLAN 语句中创建的对象的 Transact-SQL 语句，显示计划不为其返回计划。如果 SHOWPLAN 设置为 ON，那么不会执行查询而且也不会创建对象。任何对象引用都将失败，并给出一条表明对象不存在的错误信息。执行 Transact-SQL 语句查看计划时，可以跟踪 SQL 事件探查器中的 TSQL：SQL:BatchStarting 事件和性能：Execution Plan 事件。

下面是使用 SQL 查询分析器优化查询的数据库时，可能会遇到的问题：

  • 由于查询没有引用任何可优化的表，因此无法推荐索引。下列方案中，至少有一个是造成这个问题的原因。
    • 查询没有引用任何可优化的表。

    • 查询有语法错误或无效。

    • 在错误的数据库上工作。

    • 正在引用临时表。

有关更多信息，请参见索引优化向导。


使用 Web 助手向导疑难解答

本主题主要描述 Web 助手向导如何使用"当 SQL Server 数据更改时"调度选项来处理 HTML 页面的生成。

在 Web 助手向导的帮助下，使用"调度 Web 助手作业"对话框并选择"当 SQL Server 数据更改时"选项，每次发生一个或多个表中的数据更改时，都可以生成 HTML 文件。Web 助手向导完成这一任务的方法是，为用户选择的每个表生成新的 INSERT、UPDATE 和 DELETE 触发器，或者更新现有的触发器。Web 助手向导自动检测现有的触发器，然后保留。附加的 Transact-SQL 语句将追加到现有的触发器代码中。

Web 助手向导生成的触发器对象会根据下面的语句生成相应的名称：

Web Page Name_1 -> INSERT trigger
Web Page Name_2 -> UPDATE trigger
Web Page Name_4 -> DELETE trigger

例如，如果创建的页命名为"Web Page 1"，那么 Web 助手向导生成的三个触发器将分别是：Web Page 1_1, Web Page 1_2 和 Web Page 1_3，分别对应于 INSERT、UPDATE 和 DELETE 触发器。

sp_depends 不会把 Web 助手向导生成的任何触发器登记到给定表中。可以使用 sp_helptrigger 为当前数据库的指定表返回触发器信息。

使用如下步骤除去 Web 助手向导生成的任何触发器：

  1. 执行 sp_helptrigger 系统存储过程标识要除去的所有触发器对象名。
    sp_helptrigger TableName
GO
  2. 对于想要除去的每个触发器执行 DROP TRIGGER 语句：
    DROP TRIGGER WebTriggerName


Transact-SQL 调试程序疑难解答

本主题的目标是解决启动和使用 Transact-SQL 调试程序时可能遇到的问题。潜在的错误源包括：

  • 错误的 DCOM 权限设置

  • Windows 98 上的 DCOM

  • 缺少或未注册 DLL

  • 缺乏（或限制的）调试程序支持

本主题描述了如何标识和修正各种问题。在尝试解答调试程序配置的疑难问题前，请验证：

  1. 确保具有执行 SP_SDIDEBUG 扩展过程的权限。

  2. 使用在那台计算机上有管理员特权的帐户来启动 SQL Server 服务。

  3. 对于每一条错误信息，请检查事件查看器的应用程序和系统日志。
错误的 DCOM 权限设置

SQL 调试使用分布式 COM (DCOM) 在客户机和数据库服务器之间通讯。必须配置 DCOM 使远程用户可以把调试程序附加到数据库服务器的进程上。

安装 SQL Server 时，默认的 DCOM 设置就是正确的。然而，由于从运行 SQL Server 的计算机的安全角度考虑，可能想要限制调试访问权限。下面的步骤可以作为在 SQL Server 计算机上建立 DCOM 的常规过程。

重要 如果运行调试程序时，计划用户是运行 SQL Server 用户以外的任何用户，那么首先需要对 DCOM 进行正确配置。按照下面的步骤，确保有执行的权限。

在服务器上：

  1. 运行 DCOMCNFG.EXE。

  2. 在"分布式 COM 配置属性"窗口中，选择"默认安全"选项卡。在"默认访问权限"下，单击"编辑默认值"。

  3. 如果"所有人"组还没有权限，可以单击"添加"将其添加进来。从"列出名称"列表中，选择本地机器名。选择"所有人"，然后请确保把"访问类型"设置到"允许访问"中。然后，单击"确定"按钮。

    或者

    如果希望限制让指定用户使用调试功能，那么可以添加具有管理员特权的单个域用户帐户（例如，domain\account）。如果选择只添加域帐户而不是"所有人"，那么请确保同时添加"系统"帐户。

  4. 切换到"分布式 COM 配置属性"对话框的"应用程序"选项卡。

  5. 在"应用程序"列表中上下滚动，并选择"SQLDBREG"。然后单击"属性"。

  6. 选择"标识"选项卡，并确保选择"交互式用户"作为运行该应用程序的用户。

  7. 单击"确定"按钮关闭对话框。

  8. 重新启动 SQL Server 服务。

应用上述步骤之后，服务器的 DCOM 设置应该如下所示：

   DCOMCNFG
   |
   |__ Application Tab
   |   |
   |   |_____ SQLDBREG
   |      |
   |      |______ Identity Tab
   |         |
   |         |_______ The interactive user
   |
   |__ Default Security Tab
      |
      |_____ Default Access Permissions
         |
         |______ Edit Default Button
            |
            |_______ Everyone (or domain\account and System)
Windows 98 上的 DCOM

在 Windows 98 上的 DCOM95 不如 Windows NT 上的 DCOM 可靠。另外，如果在 Windows 98 上的 RPCSS.EXE 不是在装载解释器时或引导时启动，那么可能会造成一些问题。要确保 RPCSS.EXE 及时启动，修改下面的任一注册表项：

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices

按照下面的步骤在前面的任一注册表项中添加一个新的"字符串值"（可以随意命名），然后把这个值设置到"C:\WINDOWS\SYSTEM\RPCSS"中：

  1. 运行 REGEDIT.EXE。

  2. 展开 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\ CurrentVersion\Run。

  3. 右击然后选择"新建" -> "字符串值"。

  4. 键入任意名称（例如，RPC）。

  5. 双击新创建的字符串。

  6. 键入相应值（例如，C:\WINDOWS\SYSTEM\RPCSS.EXE）。

  7. 重启计算机。

同时确保下面的注册表键值设为"y"：

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole\EnableDCOM
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole\EnableRemoteConnect

做了上述改动之后，必须重启计算机。

缺少或未注册 DLL

如果调试程序启动失败，而且遇到如下错误信息，那么可能需要手工建立调试环境：

  • 输出窗口中的错误（指出在 ..\mssql\binn 文件夹下缺少 mssdi98.dll）

ODBC：错误信息 0，级别 16，状态 1

[Microsoft][ODBC SQL Server 驱动程序][SQL Server] 无法装载 DLL mssdi98.dll 或引用的 DLL 之一。

原因:126（找不到指定的模块）。

  • 事件查看器/应用程序日志中的错误（指出 sqldbg.dll 未注册或 sqldbreg 未注册）

无法连接到 <服务器名> 上的调试程序

（错误 = 0x80004002 不支持这种界面）。

请确保已在 <服务器名> 上安装并注册了客户端组件（如 SQLDBREG.EXE）。连接 54 禁用调试。

  • 错误信息对话框（指出 sqldbg.dll 未注册或 sqldbreg 未注册）。

缺少或未注册 sdiclnt.dll

初始化调试程序失败！

可能原因：

没有正确安装或注册"sdiclnt.dll"。

当服务器和客户端（即查询分析器）在同一台计算机上运行时，按照如下步骤手工安装和注册缺少的调试程序组件：

  1. 从 SQL Server 2000 光盘的文件夹 \x86\binn 中将文件 sdiclnt.dll 复制到 c:\program files\microsoft sql server\mssql\80\tools\binn，然后执行下面的命令为其注册：
    regsvr32 sdiclnt.dll

    说明 在 Windows 9x 上，regsvr32 实用工具位于文件夹 \windows\system 下。

  2. 创建文件夹 c:\program files\common files\microsoft shared\SQL Debugging。

  3. 把下面的文件从 \x86\other\sdi 复制到 c:\program files\common files\microsoft shared\SQL Debugging 下：
    sqldbg.dll
sqldbreg.exe

    然后，注册这些文件：

    regsvr32 sqldbg.dll
sqldbreg /RegServer
  4. 从 \x86\other\sdi 将文件 mssdi98.dll 复制到 sqlservr.exe 所在目录下（例如，c:\program files\microsoft sql server\mssql\binn）。

  5. 重新启动 SQL Server 服务。

当服务器和客户端在不同计算机上运行时，按照下面的步骤手工安装和注册缺少的调试程序组件：

在客户端：

  1. 从 SQL Server 2000 光盘的文件夹 \x86\binn 将文件 sdiclnt.dll 复制到 c:\program files\microsoft sql server\mssql\80\tools\binn，然后注册：
    regsvr32 sdiclnt.dll

    说明 在 Windows 9x 上，regsvr32 实用工具位于文件夹 \windows\system 下。

  2. 创建文件夹 c:\program files\common files\microsoft shared\SQL Debugging。

  3. 把下面的文件从 \x86\other\sdi 复制到 c:\program files\common files\microsoft shared\SQL Debugging 下：
    sqldbg.dll
sqldbreg.exe

    然后，注册这些文件：

    regsvr32 sqldbg.dll
sqldbreg /RegServer

在服务器上：

  1. 创建文件夹 c:\program files\common files\microsoft shared\SQL Debugging。

  2. 把下面的文件从 \x86\other\sdi 复制到 c:\program files\common files\microsoft shared\SQL Debugging：
    sqldbg.dll

    然后注册以下文件：

    regsvr32 sqldbg.dll
  3. 从 \x86\other\sdi 将文件 mssdi98.dll 复制到 sqlservr.exe 所在目录下（例如，c:\program files\microsoft sql server\mssql\binn）。

  4. 重新启动 SQL Server 服务
缺乏（或限制的）调试程序支持
  • 对于下面的数据类型提供限制的支持：
    • 表

      这种类型的变量不在本地变量窗口中显示。

    • sql_variant、text、ntext、image 和 cursor

      这些类型的变量在本地变量窗口中显示，但是无法修改。

  • 不支持大于 64K 的过程。

  • 不支持大于 32 个存储过程调用的嵌套。

  • 一个存储过程的传递参数超过 1023 个则不受支持。


Analysis Services 疑难解答

以下主题提供有关在使用 Microsoft® SQL Server™ 2000 Analysis Services 时可能遇到的最常见错误的疑难解答和解决方法。

  • 开发疑难解答

  • 处理疑难解答

  • 查询和浏览疑难解答

  • 安全疑难解答

  • 服务器疑难解答


开发疑难解答（分析服务器）

您有什么问题？

服务器上的数据库无法删除。

服务器上的数据库（在 ADOMD.Catalogs 中）在 DSO.Server.MDStores 集合中不出现而且无法删除。

原因：知识库已损坏或更改，或是服务器在事务中失败。

解决方案：若要删除该数据库并释放所用的磁盘空间，可使用决策支持对象 (DSO) 创建一个名称相同的数据库，然后使用 clsServer 对象的 Remove（删除）方法将其立即删除。

收到如下错误信息："未找到该组件的许可证信息"。

从 Microsoft® Visual Basic® 控件中收到"未找到该组件的许可证信息"消息。

原因：Microsoft SQL Server™ 2000 Analysis Services 所安装的控件带有用于运行时的许可证。Visual Basic 的安装是在 Analysis Services 之后，未能正确安装这些组件以便在设计环境中使用。

解决方案：在 Internet 上，访问 Microsoft 产品支持服务 Web 站点：http://search.support.microsoft.com/kb/c.asp。

在搜索屏中：

  1. 在"My search is about"（我的搜索是关于）下，选择"Visual Basic"。

  2. 在"I want to search by"（搜索方式）下，选择"Specific article ID number"（特定项目 ID 号）。

  3. 在"My question is"（我的问题是）下，键入 Q181854。

  4. 单击"Find"（查找），然后遵照文中的说明操作。

收到如下错误信息："多维数据集架构已优化"。

在多维数据集编辑器中选择了"优化架构"菜单命令后，收到"多维数据集架构已优化"的消息。若在此后保存该多维数据集，则会收到以下消息："在架构中检测到循环。请删除多余的联接"。

原因：通过"优化架构"命令优化架构可能并未删除事实数据表与维度表之间、或是雪花架构维度的两个维度表之间的无效联接。

解决方案：在多维数据集编辑器的架构视图中，标识无效联接，然后通过"删除联接"命令将这些联接删除。有关优化多维数据集架构的更多信息，请参见优化多维数据集架构。

当设置钻取选项时，列表中缺少表。

原因：具有优化架构的多维数据集可能不会将指定钻取选项时可以使用的表全都显示出来。有关更多信息，请参见优化多维数据集架构。

解决方案：当指定钻取选项时，可以将表联接到钻取架构。添加表并定义 SQL WHERE 子句以建立联接。

在引用决策支持对象 (DSO) 的对象属性或方法时，应用程序表现异常。

在应用程序通过 LockObject 方法获得 DSO 对象上的锁后，其它共享该 DSO 对象的应用程序就会在引用该对象的某些属性或方法时表现异常。

原因：原始应用程序有可能破坏了原始 DSO 对象。如果是这样，所有其它应用程序都将含有对该对象无效的引用，因为 DSO 会在获得锁后自动刷新更新过的对象。

解决方案：使用 DSO 对象的 Parent 属性来检查对象引用的有效性。无效的对象引用的 Parent 属性设置为 Nothing。


处理疑难解答（分析服务器）

您有什么问题？

更改了多维数据集的数据源提供程序之后，在处理该多维数据集时发生错误。

更改现有多维数据集的数据源提供程序（例如，从 ODBC 提供程序移到 Microsoft® SQL Server™ 提供程序），会导致在下一次处理该多维数据集时发生错误。

原因：不同的提供程序有时使用互不兼容的 SQL 方言，从而导致出现对于一个提供程序有效的语句对于另一个提供程序无效的现象。

解决方案：该错误信息应当标识无效的语法。使用决策支持对象 (DSO) 或多维数据集编辑器更正该问题。为避免类似问题出现，不要更改现有多维数据集的数据源提供程序。

在处理一个维度时收到如下错误信息："超过了子成员数目最大值。"

原因：一个维度的一个或多个成员所包含的子代数目多于每个父代所允许的最大子代数目。

解决方案：创建成员组以提供中间级别，以便组织维度，使任何成员所包含的子代数目都不会超出所允许的最大值。有关更多信息，请参见创建成员组。

在处理多维数据集时，在事实数据表中找到了该成员键，但在维度级别、叶成员集或该维度中却没有找到。

在处理多维数据集时，会收到如下错误信息之一：

  • 如果维度不是父子维度："在事实数据表中找到了键为 key 的成员，但在维度 dimension 的级别 level 中却没有找到。"

  • 如果该维度是一个父子维度并且其 MembersWithData 属性设置为 dataforLeafMembersOnly，错误信息就会是："在事实数据表中找到了键为 key 的成员，但在维度 dimension 的叶成员集内却没有找到。"

  • 如果该维度是父子维度并且其 MembersWithData 属性设置为 dataforLeafMembersOnly，错误信息就会是："在事实数据表中找到了键为 key 的成员，但在维度 dimension 中却没有找到。"

原因：该维度表中未包含与事实数据表中的事实相关的成员，或者该维度在维度表更改之后未处理过。

解决方案：验证维度表和事实数据表之间的引用完整性。在更改维度表之后、处理使用该维度的多维数据集之前处理该维度。有关更多信息，请参见优化多维数据集架构。

若要管理大量的此类键错误，可以将丢失的成员记录到一个文件中，然后使用数据转换服务 (DTS) 将该日志导入关系数据库中。或者将带有这些键的记录从事实数据表中删除，或者将其添加到维度表中。在多维数据集处理设置对话框中选择将维度键错误记录到文件中。

在处理或增量更新一个多维数据集或分区之后，某些事实数据表中的行无法读取。

原因：源数据缺乏引用完整性。例如，该多维数据集的事实数据表中含有一些外键值，这些值并未出现在被联接的维度表的主键列中。

解决方案：更正源数据的引用完整性，以便事实数据表和维度表间的内联接包含事实数据表中的所有行。

用户发现旧版本的多维数据集或虚拟多维数据集。

可能有两个原因：

原因：该多维数据集或虚拟多维数据集已经更改但尚未处理。

解决方案：首先管理员必须对多维数据集或虚拟多维数据集进行处理。在处理多维数据集之后，用户必须重新连接到服务器计算机。

原因：该多维数据集或虚拟多维数据集是在用户浏览它的同时被处理的。

解决方案：用户可能需要重新连接到服务器计算机。完全更新需要重新连接，但增量更新并不需要。

Analysis Services 所处理的记录比存在于事实数据表中的记录多。

原因：在维度表和事实数据表之间存在着多对多而不是一对多的关系。

解决方案：从维度表中将冗余成员删除。


查询和浏览疑难解答（分析服务器）

您有什么问题？

在浏览多维数据集时看不到数据。

当试图浏览一个多维数据集时，如果聚合是存储在一种方法（如混合 OLAP (HOLAP)）中，就看不到数据；但如果聚合是存储在另外一种模式（如关系 OLAP (ROLAP)）中，就可以看到数据。

原因：源数据缺乏引用完整性。例如，多维数据集的事实数据表中包含一些外键值，这些值不出现在被联接的维度表的主键列中。

解决方案：更正源数据的引用完整性，以便事实数据表和维度表间的内联接包含事实数据表中的所有行。

计算成员查询返回的是类似"1.#INF 或 1.#J"的文本而不是数字。

原因：计算成员的公式试图被零除。

解决方案：更改公式并检查错误发生前可能被零除的情况。

数据库的多维数据集列表中缺少多维数据集。

原因：使用引入 Microsoft® SQL™ Server 2000 Analysis Services 的功能的多维数据集不能由 SQL Server 7.0 OLAP 服务客户端应用程序使用，并且对这些客户端是隐藏的。

解决方案：将客户端应用程序升级到与 SQL Server 2000 Analysis Services 完全兼容的版本。


安全疑难解答（分析服务器）

您有什么问题？

对用户权限或组成员列表的更改未生效。

原因：在更改过程中用户已登录到 Microsoft® Windows NT® 4.0 上且尚未注销。

解决方案：用户必须先从 Windows NT 4.0 上注销然后再登录。

无法连接到存储多维数据集或虚拟多维数据集的服务器计算机。

原因：用户缺乏对包含多维数据集中的源数据的数据源的权限。

解决方案：确保用户登录提供对数据源的访问权限。

另请参见：Windows NT Server 或 Windows 2000 Server 联机文档（单击"开始"菜单中的"帮助"命令）。

临时文件所需的磁盘空间不足。

在多维数据集处理或聚合设计过程中，Analysis Manager 会显示一条消息指出临时文件所需的磁盘空间不足。

原因：Microsoft SQL Server™ 2000 Analysis Services 所使用的临时文件文件夹所在的磁盘没有更多的空间。

解决方案：在该磁盘上创建另外的空间或是在具有更多空间的另外一个磁盘上指定一个临时文件文件夹。

另请参见： 属性对话框 — 常规选项卡

在试图注册一个分析服务器时产生错误信息。

在试图注册一个分析服务器时，Analysis Manager 会显示诸如以下内容的错误信息："与服务器的连接失败，您在服务器计算机上的权限不允许您管理此分析服务器"。

原因：您在登录时所使用的帐户不是要注册的服务器上的 OLAP Administrators 组的成员。

解决方案：在要注册的服务器上，将您的帐户添加到 OLAP Administrators 组中。在该组的成员资格生效之前，您可能需要先注销，然后再登录。


服务器疑难解答（分析服务器）

您有什么问题？

收到如下错误信息："无法打开与分析服务器 servername 的连接。网络错误 servername"。

当试图在 Analysis Manager 中注册分析服务器时，Analysis Manager 会显示如下错误信息："无法打开与分析服务器 servername 的连接。网络错误 servername"。

原因：MSSQLServerOLAPService 未在指定的服务器上启动。

解决方案：在该服务器上启动 MSSQLServerOLAPService。若要启动之，需使用"服务"应用程序，该程序在 Microsoft® Windows NT® 4.0 的"控制面板"或 Windows 2000 的"控制面板"中的"管理工具"文件夹中。

如果该服务已经启动，则您可能没有在该服务器计算机上管理 Microsoft SQL Server™ 2000 Analysis Services 的权限（请参见安全疑难解答（分析服务器））。

Analysis Services 服务 MSSQLServerOLAPService 在启动时失败。

原因：计算机名已更改，网卡已更换，或是对计算机进行了其它更改。

解决方案：重新安装 Analysis Services。

原因：Analysis Services 所用登录帐户的密码已更改。

解决方案：更改 Analysis Services 的登录帐户密码。若要更改之，应使用服务应用程序，该程序在 Windows NT 4.0 的"控制面板"或 Windows 2000 的"控制面板"中的"管理工具"文件夹中。

原因：Analysis Services 的根文件夹名称中的第一个单词在同一磁盘上的根文件夹名称中有重复。例如，Analysis Services 安装在 Program Files 根文件夹中，而另外还存在一个名为 Program 的根文件夹。

解决方案：对不含 Analysis Services 的根文件夹重新命名。

在 Analysis Services 的一些非英文版本中字符显示不正确。

原因：当前显示字体不支持所用语言的全部字符集，尤其是扩展 ASCII 字符集中的字符。Analysis Services 使用的是系统中面向大多数用户界面显示的图标字体设置。

解决方案：把显示字体更改为一种支持所用语言的扩展字符集的字体：

  1. 在"控制面板"中运行显示应用程序，然后单击"外观"选项卡。

  2. 在"项目"列表中选择"图标"，然后在"字体"下选择一种支持扩展 ASCII 字符集的字体，例如 Times New Roman 或 Tahoma。

收到如下错误信息："无法从注册表获取服务器的启动目录"。

MSSQLServerOLAPService 启动失败，系统显示如下错误信息："无法从注册表获取服务器的启动目录"。

原因：如果该数据目录的路径包含 102 个以上的字符，Analysis Services 就无法启动。

解决方案：在安装过程中，确保"数据"目录的路径的大小在 102 个字符以内。在安装之后，也可使用服务器"属性"对话框中的"数据文件夹"框更改该路径。


错误信息

Microsoft® SQL Server™ 2000 在遇到问题时，根据严重级别，将把 sysmessages 系统表中的消息写入 SQL Server 错误日志和 Microsoft Windows® 2000 或 Microsoft Windows NT® 4.0 应用程序日志，或者将消息发送到客户端。

可以在遇到问题时由 SQL Server 返回错误信息，也可以使用 RAISERROR 语句手工生成错误信息。

RAISERROR 语句提供集中错误信息管理。RAISERROR 可以从 sysmessages 表检索现有条目，也可以使用硬编码（用户定义）消息。RAISERROR 返回用户定义的错误信息时，还设置系统变量记录所发生的错误。消息可以包括 C PRINTF 样式的格式字符串，该格式字符串可在运行时由 RAISERROR 指定的参数填充。这条消息在定义后就作为服务器错误信息发送回客户端。

无论是从 SQL Server 返回，还是通过 RAISERROR 语句返回，每条消息都包含：

  • 唯一标识该错误信息的消息号。

  • 表明问题类型的严重级别。

  • 标识发出错误的来源的错误状态号（如果错误可以从多个位置发出）。

  • 声明问题（有时还有可能的解决方法）的消息正文。

例如，如果访问的表不存在：

SELECT *

FROM bogus

发送到客户端的错误信息类似下面所示：

服务器：错误信息 208，级别 16，状态 1

对象名 'bogus' 无效。

查询 master 数据库中的 sysmessages 表可以查看 SQL Server 错误信息列表。有关 sysmessages 的更多信息，请参见系统错误信息。

请参见

RAISERROR

使用 RAISERROR


错误信息格式

所有 Microsoft® SQL Server™ 2000 组件都可以向应用程序发出信息、警告或错误信息。返回到应用程序的大多数 SQL Server 信息都包含如下部分：

  • 错误号

    用来标识该消息的一到五位的数字。用户定义消息的错误号可以包含多个位。

  • 描述

    Unicode 字符串，包含有关生成消息的条件的信息。

  • 严重级别

    表明错误条件严重程度的一个一位或两位的数字。

  • 状态

    一个一位到三位的数字，最大值为 127，向 Microsoft 支持工程师和开发人员表明该消息在 SQL Server 代码中生成的位置：

  • 行号

    批处理或存储过程（包含生成消息的语句）中的一个数字。行号也可以包含在所执行的存储过程文本中。

多数 SQL Server 消息的错误号、描述和严重级别都存储在 master.dbo.sysmessages 中，状态和行号是由发出消息的代码动态生成的。

在客户 Net-Library、用于 SQL Server 的 Microsoft OLE DB 提供程序或 SQL Server ODBC 驱动程序中产生的消息不包含其中的一些消息组成部分。

要想看到错误信息的示例，请执行下列语句：

 SELECT * FROM ThisObjectDoesNotExist

此语句产生的错误具有以下这些部分：

错误号：208

严重级别：16

状态：1

行：1

描述：对象名 'ThisObjectDoesNotExist' 无效。

应用程序用来访问 SQL Server 的所有数据 API 均返回错误号和描述。并非所有 API 都返回严重级别、状态或行号。只有编写 OLE DB 或 ODBC 应用程序时使用了由用于 SQL Server 的 Microsoft OLE DB 提供程序和 SQL Server ODBC 驱动程序表现的 SQL Server 特定的诊断功能，用于 SQL Server 的 Microsoft OLE DB 提供程序和 SQL Server ODBC 驱动程序才会返回这些部分。


错误信息号和描述

消息号唯一标识每条错误信息，错误信息文本描述问题。错误信息文本通常包括信息的占位符（如对象名称），显示错误信息时，要在其中插入该占位符。

在 sysmessages 表的"描述"列，用百分号 (%) 后接一个字符作为占位符；具体数据在生成错误信息时提供。记法 %d 代表数字的占位符；%ls（或 %.*ls）代表字符串的占位符。例如，为 105 号错误显示的实际错误信息可能是：

字符串 %.*ls 之前有未闭合的引号。

向主要支持提供者报告错误时，在其中加入错误号、错误状态、对象类型和对象名非常重要。否则，支持提供者在帮助解析错误信息时会感到非常困难，而且浪费时间。

请参见

将错误报告给您的主要支持提供者

sysmessages


错误信息严重级别

错误信息严重级别可用来表明 Microsoft® SQL Server™ 2000 所遇到问题的类型。

严重级别为 10 的信息为信息消息，表明问题是由于输入信息时发生错误而产生的。严重级别为 11 到 16 的错误是由用户产生的，可以由用户修正。

严重级别从 17 到 25 的错误表明软件或硬件错误。当所发生的问题产生严重级别为 17 或更高的错误时，应通知系统管理员。系统管理员必须解析这些错误，并跟踪错误发生的频率。当发生级别为 17、18 或 19 的错误时，尽管某个特定的语句无法执行，但仍可继续。

系统管理员应对能生成严重级别从 17 到 25 的所有问题进行监视，并打印包含信息的错误日志，回找发生错误的位置。

如果问题影响了整个数据库，可以使用 DBCC CHECKDB（数据库）确定损坏的程度。DBCC 可以对必须删除的一些对象进行标识，并有选择地修复损坏。如果损坏范围大，则必须对数据库进行还原。

用 RAISERROR 指定用户定义的错误信息时，使用大于 50,000 的错误信息号以及从 0 到 18 的严重级别。只有系统管理员可以发出严重级别从 19 到 25 的 RAISERROR 错误。

严重级别 0 到 19

严重级别为 10 的错误信息为信息错误。严重级别从 11 到 16 的错误信息由用户生成并可以由用户修正。严重级别为 17 和 18 的错误信息是由资源或系统错误产生的；用户会话不会中断。

使用 sp_addmessage，可以将严重级别从 1 到 25 的用户定义消息添加到 sysmessages。只有系统管理员可以添加严重级别从 19 到 25 的消息。

对于严重级别为 17 和更高的错误信息，应向系统管理员报告。

严重级别 10：状态信息

这是信息消息，表明问题是由于用户输入信息有误而产生的。严重级别 0 在 SQL Server 中是见不到的。

严重级别 11 到 16

这些消息表明错误可由用户修正。

严重级别 17：资源不足

这些消息表明语句导致 SQL Server 用尽资源（如数据库的锁或磁盘空间）或超出了系统管理员设置的一些限制。

严重级别 18：检测到非严重内部错误

这些消息表明存在某种类型的内部软件问题，但语句执行完毕，并且到 SQL Server 的连接还保持着。例如，当 SQL Server 查询处理器在进行查询优化时检测到一个内部错误，则出现严重级别为 18 的消息。每次出现严重级别为 18 的消息时，都应告知系统管理员。

严重级别 19：资源中发生 SQL Server 错误

这些消息表明已超出了 nonconfigurable 内部限制，并且当前批处理终止。严重级别 19 错误很少发生；但是，一旦发生，必须由系统管理员或主要支持提供者修正。每次出现严重级别为 19 的消息时，都应告知系统管理员。

严重级别 20 到 25

严重级别从 20 到 25 表明有系统问题。这是些严重错误，意味着进程（完成语句中指定任务的程序代码）将不再运行。进程在停止前先冻结，记录有关发生内容的信息，然后终止。到 SQL Server 的客户连接将关闭，并且根据存在问题的不同，客户端有可能无法重新连接。

严重级别为 19 或更高的错误信息将停止当前的批处理。严重级别为 20 或更高的错误信息被认为是严重错误，将终止客户连接。此范围的错误信息可能影响数据库中的所有进程，并可能表明数据库或对象损坏。严重级别从 19 到 25 的错误信息均写入错误日志。

严重级别 20：当前进程中的 SQL Server 严重错误

这些消息表明语句遇到了问题。由于该问题所影响的只是当前进程，数据库本身损坏的可能性不大。

严重级别 21：数据库 (dbid) 进程中的 SQL Server 严重错误

这些消息表明遇到了影响当前数据库中所有进程的问题；但数据库本身损坏的可能性不大。

严重级别 22：SQL Server 严重错误表的完整性置疑

这些消息表明消息中所指定的表或索引已因软件或硬件问题而损坏。

严重级别 22 错误很少发生；但是，如果遇到该错误，请运行 DBCC CHECKDB 确定数据库中是否有其它对象也受损坏。问题有可能只存在于超速缓存中，而不是存在于磁盘本身。如果是这样，重新启动 SQL Server 将修正该问题。要继续工作，必须重新连接到 SQL Server。否则，用 DBCC 修复该问题。有些情况下，有必要还原数据库。

如果重新启动帮助不大，则问题存在于磁盘上。有时，摧毁在错误信息中指定的对象可以解决该问题。例如，如果消息说 SQL Server 在非聚集索引中发现长度为 0 的行，删除该索引然后重建。

严重级别 23：SQL Server 严重错误：数据库完整性置疑

这些消息表明由于硬件或软件问题，整个数据库完整性存在问题。

严重级别 23 错误很少发生；但是，如果遇到，请运行 DBCC CHECKDB 确定损坏的程度。问题有可能只存在于超速缓存中，而不是存在于磁盘本身。如果是这样，重新启动 SQL Server 将修正该问题。要继续工作，必须重新连接到 SQL Server。否则，用 DBCC 修复该问题。有些情况下，有必要重新启动数据库。

严重级别 24：硬件错误

这些消息表明某些类型的媒体失败。系统管理员可能必须重新装载数据库。可能还有必要给硬件厂商打电话。

请参见

备份和还原数据库

DBCC

DBCC CHECKDB

设置配置选项

sp_configure


ADO 错误信息格式

ADO 规范在 Errors 集合中定义 Error 对象。每个 Error 对象都包含一条基础提供程序中的消息。ADO 不给出提供程序特定的诊断信息。ADO 和用于 SQL Server 的 Microsoft OLE DB 提供程序将 Microsoft® SQL Server™ 消息的组成部分映射到 ADO Error 对象属性中：

  • 描述

    包含 SQL Server 消息描述，一般来自 master.dbo.sysmessages 中的 description 列。

  • SQLState

    包含由用于 SQL Server 的 Microsoft OLE DB 提供程序生成的五字符 SQLSTATE 代码。

  • NativeError

    包含 SQL Server 错误号。例如，如果一条语句产生 SQL Server 错误 170（语法错误），则在 NativeError 中返回 170。


OLE DB 错误信息格式

OLE DB 应用程序以如下方式接收 Microsoft® SQL Server™ 消息：

  • 调用 OLE DB ISQLErrorInfo::GetSQLInfo 函数。

  • 调用提供程序特定的 ISQLServerErrorInfo::GetErrorInfo 函数。

ISQLErrorInfo::GetSQLInfo 从 master.dbo.sysmessages 将 SQL Server 错误号返回为 plNativeError 参数，将 SQLSTATE 值返回为 pbstrSQLState 参数。这些 SQLSTATE 代码与 SQL Server 消息的任何部分都不相关。用于 SQL Server 的 Microsoft OLE DB 提供程序在向应用程序返回消息时，可随时生成相应的 SQLSTATE 代码。用于 SQL Server 的 Microsoft OLE DB 提供程序生成的 SQLSTATE 代码与在 ODBC 规范中定义的五字符 SQLSTATE 代码相同。对于 ISQLErrorInfo::GetSQLInfo，当 SQL Server 未产生错误时，pbstrSQLState 可能是 NULL。

用于 SQL Server 的 Microsoft OLE DB 提供程序和 ODBC 的 Microsoft OLE DB 提供程序均支持 ISQLErrorInfo 接口。

提供程序特定的 ISQLServerErrorInfo 接口返回有关 SQL Server 错误的更详细的信息。ISQLServerErrorInfo 接口表现一个成员函数 GetErrorInfo。该函数向 SSERRORINFO 结构返回一个指针，向字符串缓冲区返回一个指针。如果 SQL Server 不产生错误，则指向 SSERRORINFO 结构的指针为 NULL。

SQL Server 消息的组成部分将映射成 SSERRORINFO 结构的成员：

pwszMessage

包含 SQL Server 错误描述。

lNative

包含 SQL Server 错误号。

bState

包含 SQL Server 错误状态。

bClass

包含 SQL Server 错误条件的严重度。

wLineNumber

包含所产生错误的存储过程的行号。

请参见

OLE DB 错误接口中的信息


ODBC 错误信息格式

ODBC 驱动程序以诊断记录的形式将消息返回到应用程序。应用程序可以调用 SQLGetDiagRec 和 SQLGetDiagField 函数检索这些诊断记录。Microsoft® SQL Server™ ODBC 驱动程序将 SQL Server 消息的组成部分映射到如下这些标准 ODBC 诊断记录字段中：

SQLSTATE

ODBC 规范定义一个称为 SQLSTATE 的五字符代码，用来标识生成该消息的条件。这些 SQLSTATE 代码与 SQL Server 消息的任何部分都不相关。SQL Server ODBC 在将消息返回到应用程序时，可随时生成相应的 SQLSTATE 代码。

pfNative

SQL Server ODBC 驱动程序将 SQL Server 错误号返回为 ODBC pfNative 字段。例如，如果一条语句产生 SQL Server 错误 170（语法错误），则 ODBC 驱动程序在 pfNative 中返回 170。

MessageText

SQL Server ODBC 驱动程序将 SQL Server 错误描述返回为 ODBC 诊断记录中的 MessageText 字段。ODBC 规范定义 MessageText 字段的一系列标题，表明发出消息的组件：

  • [Microsoft][ODBC 驱动程序管理器]

    这些消息是由 ODBC 驱动程序管理器发出的。

  • [Microsoft][ODBC 游标库]

    这些消息是由 ODBC 客户游标库发出的。

  • [Microsoft][ODBC SQL Server 驱动程序]

    这些消息是由 SQL Server ODBC 驱动程序发出的。如果没有以 Net-Library 或 SQL Server 安装为名称的其它节点，则由驱动程序发出消息。

  • [Microsoft][ODBC SQL Server 驱动程序][Net-Libraryname]

    这些消息是由 SQL Server Net-Library 发出的，其中 Net-Libraryname 是 SQL Server 客户端 Net-Library 的显示名（例如，Named Pipes、Shared Memory、Multiprotocol、TCP/IP Sockets、NWLink IPX/SPX 或 Banyan VINES）。

  • [Microsoft][ODBC SQL Server 驱动程序][SQL Server]

    这些消息是由 SQL Server 发出的。错误信息的其余部分是来自 SQL Server 的描述，通常来自 master.dbo.sysmessages。

ODBC 规范允许 ODBC 驱动程序在 ODBC 诊断字段中定义驱动程序特定的字段。SQL Server ODBC 驱动程序将 SQL Server 消息的各部分映射到 SQL Server ODBC 驱动程序的各特定诊断字段中：

SQL_DIAG_SS_SEVERITY。

包含 SQL Server 严重级别。

SQL_DIAG_SS_MSGSTATE。

包含 SQL Server 状态。它与 ODBC SQLSTATE 代码无关。

SQL_DIAG_SS_LINE。

包含含有生成消息的 SQL 语句的行号。

SQL_DIAG_SS_PROCNAME。

包含生成消息的存储过程的名称（如果恰当）。

SQL_DIAG_SS_SRVNAME。

包含产生消息的服务器名称。

请参见

处理错误和消息


用于 C 语言的嵌入式 SQL 错误信息格式

这些错误和消息将在 SQLCA 数据结构中返回到应用程序。Microsoft® SQL Server™ 消息各部分将映射到 SQLCA 数据结构的各字段中：

sqlerrmc

包含错误信息文本。

sqlerrd[1]

包含 SQL Server 错误号。

sqlerrd[2]

包含 SQL Server 严重级别。

Sqlstate

包含 SQLSTATE 运行时错误代码，在用于 C 语言的嵌入式 SQL 中定义。这些 SQLSTATE 代码与 SQL Server 消息的任何部分都不相关。


DB-Library 错误信息格式

DB-Library 返回 Microsoft® SQL Server™ 错误和消息以回调由应用程序程序员编写的函数。

应用程序程序员使用 dberrorhandle 函数给出 DB-Library 处理错误的回调函数地址。当 DB-Library 确定发生了一个错误时，它调用由 dberrorhandle 标识的回调函数。DB-Library 将 SQL Server 错误信息传入回调函数的参数中。

severity

包含错误严重度。

dberr

包含 SQL Server 错误号。

dberrstr

包含对 SQL Server 错误的描述。

应用程序程序员使用 dbmsghandle 函数给出 DB-Library 处理消息的回调函数的地址。当 DB-Library 从 SQL Server 接收信息消息时，它调用由 dbmsghandle 标识的回调函数。

DB-Library 将 SQL Server 消息信息传递到回调函数的参数中。

msgno

包含标识消息的错误号。

msgstate

包含 SQL Server 消息状态。

severity

包含错误条件的严重度。

msgtext

包含对 SQL Server 消息的描述。

srvname

包含生成该消息的服务器名称。

procname

包含生成该消息的存储过程名称。

line

包含生成该消息的存储过程或命令批处理中的行号。

DB-Library 异步调用应用程序错误处理程序函数和消息处理程序函数，因为包含消息和错误的数据包是从服务器接收的。这意味着 DB-Library 应用程序接收错误和消息的顺序与使用用于 SQL Server 的 Microsoft OLE DB 提供程序或 SQL Server ODBC 驱动程序可以略有不同。


SQL Server 实用工具返回的消息

所有 Microsoft® SQL Server™ 2000 实用工具均使用 ODBC，isql 命令提示实用工具除外。这对基于 ODBC 的实用工具的错误信息显示方式有影响。

  • 这些错误信息可能具有写在描述中的起始 ODBC 标题。这些标题标识了产生错误的组件。osql 命令提示实用工具返回 ODBC 标题。SQL 查询分析器在默认情况下删除 ODBC 标题，但用户可以设置连接选项来返回这些标题。

    例如，isql 将错误 208 的描述返回为：

对象名 'ThisObjectDoesNotExist' 无效。

osql 在描述中包括 ODBC 标题：

[Microsoft][ODBC SQL Server 驱动程序][SQL Server] 对象名 'ThisObjectDoesNotExist' 无效。

在消息中出现 ODBC 标题并不表明问题一定存在于 ODBC 组件中。SQL Server ODBC 驱动程序在所有组件消息中都包括这些标题。有关如何确定产生错误的组件的更多信息，请参见 ODBC 错误信息格式。

  • 在 SQL Server ODBC 驱动程序中产生的错误只有描述。没有错误号、状态、严重级别或行号。例如，如果在 SQL 查询分析器中执行下列语句，则 SQL Server ODBC 驱动程序本身将产生语法错误：
    { CLL sp_who }

    因为是驱动程序生成的错误，SQL 查询分析器所显示的唯一消息部分是描述：

[Microsoft][SQL Server ODBC 驱动程序]语法错误或违规访问

请参见

isql 实用工具

osql 实用工具

sysmessages


错误信息描述

下列主题包含有关 Microsoft® SQL Server™ 2000 系统错误信息的信息。另外，本节也列出了其它类型错误信息类型的详细信息，包括：

  • DB-Library 错误信息

  • 分布式查询错误信息

  • 用于 C 语言的嵌入式 SQL 的错误信息

  • SQL Server 企业管理器错误信息

  • ODBC 错误信息

  • XML 错误信息

请参见

解析系统错误信息

错误信息格式


系统错误信息

本节中的主题包含 Microsoft® SQL Server™ 2000 系统错误信息的文本，它们按错误号排列。这些主题的表中包括错误信息号、严重级别及描述，其中，描述是来自 master.sysmessages 表的错误信息文本。

对于部分系统错误信息还提供了额外的主题，对问题进行解释，并提供解决错误应进行操作的建议。

master.sysmessages 表对可由 SQL Server 返回的每个系统错误或警告都有一行。下表显示 sysmessages 表中的列名。

列名 | 数据类型 | 描述
error | int | 唯一错误号。
severity | smallint | 错误的严重级别。
dlevel | smallint | 保留。仅限内部使用。
description | nvarchar(255) | 每当错误信息在特定上下文中出现时，要插入的带参数和变量的占位符的错误信息文本。
mslangid | smallint | 系统消息组 ID。

这些符号可能与系统错误信息描述一起出现在错误信息文本中。这些符号是占位符，当在特定上下文内生成错误文本时，将由具体值取代。

符号 | 含义
%d、%ld 或 %D | 十进制整数
%x | 十六进制数
%ls 或 %.*ls | 字符串
%S_type | SQL Server 定义的结构
%c | 单个字符
%lf | 双浮点数


错误 1 -999

错误 | 严重度 | 描述（消息文本）
1 | 10 | 上次升级的版本日期: 10/11/90.
21 | 10 | 警告:严重错误 %1! 发生于 %2!。请记下错误和时间，然后与系统管理员联系。
102 | 15 | 在 ''%1!'' 附近有语法错误。
103 | 15 | 以 ''%2!'' 开头的 %1! 太长。最大长度为 %4!。
104 | 15 | 如果语句中包含 UNION 运算符，那么 ORDER BY 子句中的项就必须出现在选择列表中。
105 | 15 | 字符串 ''%1!'' 之前有未闭合的引号。
106 | 16 | 查询中的表名太多。允许的最大数目为 %1!。
107 | 15 | 列前缀 ''%1!'' 与查询中所用的表名或别名不匹配。
108 | 15 | ORDER BY 子句中的位置号 %1! 超过了选择列表中项数目。
109 | 15 | INSERT 语句中列的数目大于 VALUES 子句中指定的值的数目。VALUES 子句中值的数目必须与 INSERT 语句中指定的列的数目匹配。
110 | 15 | INSERT 语句中列的数目小于 VALUES 子句中指定的值的数目。VALUES 子句中值的数目必须与 INSERT 语句中指定的列的数目匹配。
111 | 15 | ''%1!'' 必须是批查询中的第一条语句。
112 | 15 | %1! 语句中不允许有变量。
113 | 15 | 缺少注释的结尾标记 '*/'。
114 | 15 | 对于将值赋给变量的语句，浏览模式无效。
116 | 15 | 当没有用 EXISTS 引入子查询时，在选择列表中只能指定一个表达式。
117 | 15 | %1! 名称 ''%2!'' 包含的前缀数目超过了最大值。最大值为 %4!。
118 | 15 | 只有 sysadmin 角色的成员才能指定 %2! 语句的 %1! 选项。
119 | 15 | 必须传递参数个数 %1!，并以 '@name = value' 的形式传递后续的参数。一旦使用了 '@name = value' 形式之后，所有后续的参数就必须以 '@name = value' 的形式传递。
120 | 15 | INSERT 语句的选择列表包含的项少于插入列表中的项。SELECT 语句中值的数目必须与 INSERT 语句中列的数目匹配。
121 | 15 | INSERT 语句的选择列表包含的项多于插入列表中的项。SELECT 语句中值的数目必须与 INSERT 语句中列的数目匹配。
122 | 15 | %1! 选项只允许用于 %2! 语法。
123 | 15 | 批/过程超过了 %1! 个字符的最大长度。
124 | 15 | CREATE PROCEDURE 不包含任何语句。
125 | 15 | Case 表达式只能嵌套到 %1! 层。
128 | 15 | 在此上下文中不允许使用名称 ''%1!''。此处只允许使用常量、表达式或变量。不允许使用列名。
129 | 15 | 填充因子 %1! 是无效百分比；填充因子必须介于 1 到 100 之间。
130 | 16 | 不能对包含聚合或子查询的表达式执行聚合函数。
131 | 15 | 赋予 %2! ''%3!'' 的大小（%1!）超过了任意数据类型的最大允许值（%5!）。
132 | 15 | 标签 ''%1!'' 已声明。标签名称在批查询或存储过程内部必须唯一。
133 | 15 | GOTO 语句指向了标签 ''%1!''，但该标签尚未声明。
134 | 15 | 变量名 ''%1!'' 已声明。变量名在批查询或存储过程内部必须唯一。
135 | 15 | 不能在 WHILE 语句的作用域之外使用 BREAK 语句。
136 | 15 | 不能在 WHILE 语句的作用域之外使用 CONTINUE 语句。
137 | 15 | 必须声明变量 ''%1!''。
138 | 15 | 不允许在子查询中使用相关子句。
139 | 15 | 不能向局部变量赋予默认值。
140 | 15 | 只能在 CREATE TRIGGER 语句内部使用 IF UPDATE。
141 | 15 | 向变量赋值的 SELECT 语句不能与数据检索操作结合使用。
142 | 15 | 约束 ''%1!'' 的定义中有错误语法。
143 | 15 | 在排序依据列表中没有找到 COMPUTE BY 子句中的某一项。计算依据列表中的所有表达式也必须同时出现在排序依据列表中。
144 | 15 | 在用于 GROUP BY 子句分组依据列表的表达式中，不能使用聚合或子查询。
145 | 15 | 如果指定了 SELECT DISTINCT，那么 ORDER BY 子句中的项就必须出现在选择列表中。
146 | 15 | 未能为子查询分配辅助表。超出了查询中表数目的最大值（%1!）。
147 | 15 | 聚合不应出现在 WHERE 子句中，除非该聚合位于 HAVING 子句或选择列表所包含的子查询中，并且要对其进行聚合的列是外部引用。
148 | 15 | WAITFOR 所用的时间字符串 ''%1!'' 中时间语法有误。
149 | 15 | WAITFOR 所用的时间值 ''%1!'' 是无效值。请检查日期/时间语法。
150 | 15 | 外联接的两项都必须包含列。
151 | 15 | ''%1!'' 是无效 money 值。
153 | 15 | 在 %3! 语句中有 %1! 选项的无效使用。
154 | 15 | 在 %2! 中不允许使用 %1!。
155 | 15 | ''%1!'' 不是可以识别的 %3! 选项。
156 | 15 | 在关键字 ''%1!'' 附近有语法错误。
157 | 15 | 聚合不应出现在 UPDATE 语句的集合列表中。
159 | 15 | 对于 DROP INDEX，必须以 tablename.indexname 的形式同时给出表名和索引名。
160 | 15 | 规则不包含变量。
161 | 15 | 规则包含多个变量。
163 | 15 | 计算依据列表与排序依据列表不匹配。
164 | 15 | GROUP BY 表达式必须引用出现在选择列表中的列名。
165 | 16 | 不能授予或废除特权 %1!。
166 | 15 | ''%1!'' 不允许将数据库名称指定为对象名前缀。
167 | 16 | 不能在临时对象上创建触发器。
168 | 15 | %1! ''%2!'' 超出了计算机表示范围（%4! 字节）。
169 | 15 | 在排序依据列表中多次指定了某一列。排序依据列表中的列必须是唯一的。
170 | 15 | 第 %1! 行:在 ''%1!'' 附近有语法错误。
171 | 15 | 不能在浏览模式中使用 SELECT INTO。
172 | 15 | 不能在浏览模式中使用 HOLDLOCK。
173 | 15 | 列 ''%1!'' 的定义中必须包括数据类型。
174 | 15 | %1! 函数要求有 %2! 个参数。
177 | 15 | 仅当 SELECT 语句中有 INTO 子句时，才能使用 IDENTITY 函数。
178 | 15 | 在此上下文中不能使用带有返回值的 RETURN 语句。
179 | 15 | 向存储过程传递常量时不能使用 OUTPUT 选项。
180 | 15 | 此 %1! 语句中参数太多。参数最大数目为 %2!。
181 | 15 | 不能在 DECLARE 语句中使用 OUTPUT 选项。
182 | 15 | 必须为 READTEXT 或 WRITETEXT 实用工具提供表名和列名。
183 | 15 | 列 ''%2!'' 的小数位数（%1!）必须介于 %4! 到 %5! 之间。
185 | 15 | 数据流在大容量形式下的 WRITETEXT 语句中无效。
186 | 15 | WRITETEXT 语句中缺少数据流。
188 | 15 | 在 CREATE DATABASE 语句中，如果不同时指定至少一个非日志设备，就不能指定日志设备。
189 | 15 | %1! 函数要求有 %2! 到 %3! 个参数。
191 | 15 | SQL 语句的某些部分嵌套过深。请重写查询或将其分解为若干较小的查询。
192 | 16 | 小数位数必须小于或等于精度。
193 | 15 | 以 ''%1!'' 开头的对象名或列名太长。最大长度为 %3! 个字符。
194 | 15 | SELECT INTO 语句不能包含向变量赋值的 SELECT 语句。
195 | 15 | ''%1!'' 不是可以识别的 %3!。
196 | 15 | SELECT INTO 必须是包含 UNION 运算符的 SQL 语句中的第一个查询。
197 | 15 | 无法在向表插入变量时将 EXECUTE 用作源。
198 | 15 | 浏览模式对于包含 UNION 运算符的语句无效。
199 | 15 | INSERT 语句不能包含向变量赋值的 SELECT 语句。
201 | 16 | 过程 ''%1!'' 需要参数 ''%3!''，但未提供该参数。
202 | 16 | WAITFOR 的类型 ''%1!'' 无效。支持的数据类型为 CHAR/VARCHAR、NCHAR/NVARCHAR 和 DATETIME。WAITFOR DELAY 还支持 INT 和 SMALLINT 数据类型。
203 | 16 | 名称 ''%1!'' 不是有效的标识符。
204 | 20 | 在节点 %1! 中发生规范化错误。
205 | 16 | 包含 UNION 运算符的 SQL 语句中的所有查询都必须在目标列表中具有相同数目的表达式。
206 | 16 | 操作数类型冲突:%1! 与 %2! 不兼容
207 | 16 | 列名 ''%1!'' 无效。
208 | 16 | 对象名 ''%1!'' 无效。
209 | 16 | 列名 ''%1!'' 不明确。
210 | 16 | 从 binary/varbinary 字符串向 datetime 转换时发生语法错误。
212 | 16 | 表达式结果长度超出最大限制。最大值为 %1!，但目前长度为 %2!。
213 | 16 | 插入错误:列名或所提供值的数目与表定义不匹配。
214 | 16 | 过程需要参数 ''%1!'' 为 ''%2!'' 类型。
217 | 16 | 超出了存储过程、函数、触发器或视图的最大嵌套层数（最大层数为 %1!）。
220 | 16 | 发生数据类型 %1! 的算术溢出错误，值 = %2!。
221 | 10 | FIPS 警告:存在从 %1! 到 %2! 的隐性转换。
223 | 11 | 对象 ID %1! 被指定为表 ID %2! 中列 ID %3! 的默认值，但该对象缺少或不是默认值类型。
224 | 11 | 对象 ID %1! 被指定为表 ID %2! 中列 ID %3! 的规则，但该对象缺少或不是默认值类型。
226 | 16 | 在多语句事务内不允许使用 %1! 语句。
229 | 14 | 拒绝了对对象 ''%2!''（数据库 ''%4!''，所有者 ''%6!''）的 %1! 权限。
230 | 14 | 拒绝了对对象 ''%4!'' 的列 ''%2!''（数据库 ''%6!''，所有者 ''%8!''）的 %1! 权限。
231 | 11 | 没有这样的默认值。ID = %1!，数据库 ID = %2!。
232 | 16 | 发生类型 %1! 的算术溢出错误，值 = %2!。
233 | 16 | 表 ''%3!'' 中的列 ''%1!'' 不能为空。
234 | 16 | 结果空间不足，无法将 money 值转换为 %1!。
235 | 16 | 无法将 char 值转换为 money。该 char 值的语法有误。
236 | 16 | 从 char 数据类型到 money 数据类型的转换导致 money 溢出错误。
237 | 16 | 结果空间不足，无法将 money 值转换为 %1!。
238 | 16 | 结果空间不足，无法将 %1! 值（= %2!）转换为 money 数据类型。
241 | 16 | 从字符串转换为 datetime 时发生语法错误。
242 | 16 | 从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。
243 | 16 | 类型 %1! 不是已定义的系统类型。
244 | 16 | %1! 值 ''%2!'' 的转换溢出了 %4! 列。请使用较大的整数列。
245 | 16 | 将 %1! 值 ''%2!'' 转换为数据类型为 %4! 的列时发生语法错误。
248 | 16 | %1! 值 ''%2!'' 的转换溢出了 int 列。超出了最大整数值。
251 | 16 | 未能为查询优化分配辅助表。超出了查询中表数目的最大值（%1!）。
256 | 16 | 数据类型 %1! 对于函数 %2! 无效。允许的类型为:char/varchar、nchar/nvarchar 和 binary/varbinary。
257 | 16 | 不允许从数据类型 %1! 到 %2! 的隐性转换。请使用 CONVERT 函数来运行此查询。
259 | 16 | 未启用对系统目录的特殊更新。系统管理员必须重新配置 SQL Server 以允许这种操作。
260 | 16 | 不允许从数据类型 %1! 到数据类型 %2! 的隐性转换（表 ''%3!''，列 ''%5!''）。请使用 CONVERT 函数来运行此查询。
261 | 16 | ''%1!'' 不是可以识别的函数。
262 | 16 | 在数据库 ''%2!'' 中拒绝了 %1! 权限。
263 | 16 | 必须指定要从中选择的表。
264 | 16 | 在结果列的列表中多次出现列名 ''%1!''。
266 | 16 | EXECUTE 后的事务计数指出缺少了 COMMIT 或 ROLLBACK TRANSACTION 语句。原计数 = %1!，当前计数 = %2!。
267 | 16 | 无法找到对象 ''%1!''。
268 | 16 | 无法在此数据库中运行 SELECT INTO。数据库所有者必须运行 sp_dboption 以启用此选项。
270 | 16 | 无法修改对象 ''%1!''。
271 | 16 | 无法修改列 ''%1!''，因为该列是计算列。
272 | 16 | 不能更新 timestamp 列。
273 | 16 | 不能在 timestamp 列中插入非空值。请使用带有列的列表，或 timestamp 列默认值为 NULL 的 INSERT 语句。
278 | 16 | 在 GROUP BY 子句中不能使用 text、ntext 和 image 数据类型。
279 | 16 | 在这一子查询或聚合表达式中，text、ntext 和 image 数据类型无效。
280 | 16 | 对于 TEXTPTR 函数，只有 text、ntext 和 image 列有效。
281 | 16 | 从 %2! 转换为字符串时，%1! 为无效样式号。
282 | 10 | 过程 ''%1!'' 试图返回状态值 NULL，但不允许这样做。将改为返回状态值 0。
283 | 16 | 在 INSTEAD OF 触发器内部，无法对已插入的或已删除的表使用 READTEXT。
284 | 16 | 不能将规则绑定到 text、ntext 或 image 数据类型。
285 | 16 | READTEXT、WRITETEXT 和 UPDATETEXT 语句不能用于视图或函数。
286 | 16 | 不能更新逻辑表 INSERTED 和 DELETED。
287 | 16 | 触发器内不允许使用 %1! 语句。
288 | 16 | PATINDEX 函数只能对 char、nchar、varchar、nvarchar、text 和 ntext 数据类型进行操作。
291 | 16 | CAST 或 CONVERT:为类型 ''%1!'' 指定的特性无效
292 | 16 | 结果空间不足，无法将 smallmoney 值转换为 %1!。
293 | 16 | 无法将 char 值转换为 smallmoney。该 char 值的语法有误。
294 | 16 | 从 char 数据类型到 smallmoney 数据类型的转换导致 smallmoney 溢出错误。
295 | 16 | 从字符串转换为 smalldatetime 数据类型时发生语法错误。
296 | 16 | 从 char 数据类型到 smalldatetime 数据类型的转换导致 smalldatetime 值越界。
298 | 16 | 从 datetime 数据类型到 smalldatetime 数据类型的转换导致 smalldatetime 溢出错误。
299 | 16 | 用错误的类型 %1! 调用了函数 DATEADD。
301 | 16 | 查询中包含不允许的外联接请求。
303 | 16 | 表 ''%1!'' 是外联接子句的内部成员。如果该表同时也包含在常规联接子句中，那么这种情况是不允许的。
306 | 16 | 不能比较或排序 text、ntext 和 image 数据类型，除非使用 IS NULL 或 LIKE 运算符。
307 | 16 | FROM 子句中所指定的表 ''%2!'' 上的索引 ID %1! 不存在。
308 | 16 | FROM 子句中所指定的表 ''%3!'' 上的索引 ''%1!'' 不存在。
311 | 16 | 不能在 inserted 表和 deleted 表中使用 text、ntext 或 image 列。
312 | 16 | 不能在筛选存储过程中引用 text、ntext 或 image 列。
313 | 16 | 为过程或函数 %1! 提供的参数数目不够。
401 | 16 | 语句或表达式 %1! 尚未实现。
403 | 16 | 对数据类型而言运算符无效。运算符为 %1!，类型为 %2!。
409 | 16 | %1! 运算不能以 %2! 数据类型作为参数。
410 | 20 | 排序依据列表中不存在第 %1! 条 COMPUTE 子句的第 %2! 个 ''BY'' 表达式。
411 | 20 | 选择列表中不存在第 %1! 条 COMPUTE 子句的第 %2! 个聚合表达式。
420 | 16 | text、ntext 和 image 数据类型不能用于 ORDER BY 子句中。
425 | 16 | 接收变量的数据类型 %1! 不等于列 ''%3!'' 的数据类型 %2!。
426 | 16 | 接收变量的长度 %1! 小于列 ''%3!'' 的长度 %2!。
427 | 20 | 未能装载数据库 ID %2! 中约束 ID %1! 的 sysprocedures 条目。
428 | 20 | 未能在 sysconstraints 中找到数据库 ID %2! 中约束 ID %1! 对应的行。
429 | 20 | 编译时未能在数据库 ID %2! 的 sysconstraints 中找到新约束 ID %1!。
430 | 20 | 编译外键时，未能解析数据库 ID %2! 中对象 ID %1! 的表名。
431 | 19 | 未能绑定外键约束。查询中涉及的表太多。
433 | 20 | 未能找到 ''%1!'' 的 CHECK 约束，虽然该表被标志为拥有 CHECK 约束。
436 | 20 | 未能打开数据库 ID %2! 中的被引用表 ID %1!。
437 | 20 | 未能解析表 ID %1! 中的被引用列名。
438 | 20 | 未能解析表 ID %1! 中的引用列名。
439 | 20 | 未能找到数据库 ID %3! 中表 ''%1!'' 的 FOREIGN KEY 约束，虽然该表被标志为拥有 FOREIGN KEY 约束。
441 | 16 | 无法使用远程数据源上的 ''%1!'' 函数。
443 | 16 | 在函数内不正确地使用了 ''%1!''。
444 | 16 | 函数中含有的 SELECT 语句无法向客户端返回数据。
445 | 16 | 不能对包含 COLLATE 子句的表达式使用 COLLATE 子句。
446 | 16 | 无法解决 %1! 操作的排序规则冲突。
447 | 16 | 表达式类型 %1! 对 COLLATE 子句无效。
448 | 16 | 排序规则 ''%1!'' 无效。
449 | 16 | 排序规则冲突，原因为排序子句采用不同的排序规则 ''%1!'' 和 ''%3!''。
450 | 16 | 对 text 数据类型不支持代码页转换。从:%d 到:%1!。
451 | 16 | 无法解决列 %1!（在 %2! 语句中）的排序规则冲突。
452 | 16 | COLLATE 子句不能用于用户定义数据类型。
453 | 16 | 只对 Unicode 数据类型支持排序规则 ''%1!''，并且不能在数据库或服务器级别设置该排序规则。
455 | 16 | 函数中最后一条语句必须是返回语句。
456 | 16 | 无法执行值从 %1! 到 %2! 的隐性转换，因为结果排序规则因排序规则冲突而未能解决。
457 | 16 | 无法执行值从 %1! 到 %2! 的隐性转换，因为该值的排序规则因排序规则冲突而未能解决。
502 | 16 | SQL 调试界面 (SDI) 要求 SQL Server 在作为服务启动时不能用系统帐户登录。请用控制面板重置为以用户帐户登录。
503 | 16 | 无法为连接 %2! 将符号信息发送到 %1! 上的调试程序。已禁用调试。
504 | 16 | 无法连接到 %1! 上的调试程序（错误 = 0x%2!）。请确保已在 %3! 上安装并注册了客户端组件（如 SQLDBREG.EXE）。已禁用对连接 %5! 的调试。
505 | 16 | 当前用户帐户是用 SETUSER 唤醒调用的。不允许更改数据库。
506 | 16 | LIKE 谓词中指定了无效的转义符 ''%1!''。
507 | 16 | SET ROWCOUNT 的参数无效。必须是非空非负整数。
508 | 16 | 无法连接到 %1! 上的调试程序（错误 = 0x%2!）。请确保已在 %3! 上安装并注册了客户端组件（如 SQLLE.DLL）。已禁用对连接 %5! 的调试。
509 | 11 | 没有找到用户名 ''%1!''。
510 | 16 | 无法创建比允许的最大值还大的工作表行。请用 ROBUST PLAN 提示重新提交查询。
511 | 16 | 无法创建大小为 %1! 的行，该值大于允许的最大值 %2!。
512 | 16 | 子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后，或子查询用作表达式时，这种情况是不允许的。
513 | 16 | 列的插入或更新与先前的 CREATE RULE 语句所强制的规则冲突。该语句已终止。冲突发生于数据库 ''%1!''，表 ''%3!''，列 ''%5!''。
514 | 16 | 无法与 %1! 上的调试程序联络（错误 = 0x%2!）。已禁用对连接 %3! 的调试。
515 | 16 | 无法将 NULL 值插入列 ''%1!''，表 ''%3!''；该列不允许空值。%ls 失败。
516 | 16 | 初始化 OLE 库的尝试失败。请查验此计算机上 OLE DLL 的正确版本。
517 | 16 | 向列 ''%1!'' 添加值时导致溢出。
518 | 16 | 无法将数据类型 %1! 转换为 %2!。
520 | 16 | SQL Server 不再支持 SQL 调试界面 (SDI) 的 %1! 版。
528 | 20 | 试图使用 upsleep 系统函数时检测到系统错误。
529 | 16 | 不允许从数据类型 %1! 到 %2! 的显式转换。
532 | 16 | 时间戳（已改为 %1!）表明其他用户已更新了该行。
535 | 16 | 两个 datetime 列的差别导致了运行时溢出。
536 | 16 | 向 substring 函数传递了无效的 length 参数。
538 | 16 | 无法找到 ''%1!''。可能已除去了此语言。请与系统管理员联系。
542 | 16 | 遇到了无效的 datetime 值。该值超过了 9999 年。
544 | 16 | 当 IDENTITY_INSERT 设置为 OFF 时，不能向表 ''%1!'' 中的标识列插入显式值。
545 | 16 | 当 IDENTITY_INSERT 设置为 ON 时，必须指定表 ''%1!'' 中标识列的显式值。
547 | 16 | %1! 语句与 %2! %3! 约束 ''%4!'' 冲突。该冲突发生于数据库 ''%6!''，表 ''%8!''%10!%11!%13!。
548 | 16 | 复制所管理的标识范围已满，必须由复制代理进行更新。%1! 冲突发生于数据库 ''%2!''，表 ''%4!''%6!%7!%9!。可调用 Sp_adjustpublisheridentityrange 以获取新的标识范围。
550 | 16 | 试图进行的插入或更新已失败，原因是目标视图或者目标视图所跨越的某一视图指定了 WITH CHECK OPTION，而该操作的一个或多个结果行又不符合 CHECK OPTION 约束的条件。
551 | 16 | 校验值已改为 %1!。这表明其他用户已更新了该行。
552 | 15 | CryptoAPI 函数 ''%1!'' 失败。错误 0x%2!:%3!
555 | 16 | 尚未启用用户定义的函数。
556 | 16 | 由于存储过程改变了目标表的架构，INSERT EXEC 失败。
557 | 16 | 只有函数和扩展存储过程才能从函数内部执行。
558 | 16 | 在 FUNCTION 内部，不允许进行远程函数调用。
561 | 16 | 访问文件 ''%1!'' 失败
562 | 16 | 访问文件 ''%1!'' 失败。只能通过共享来访问文件。
563 | 14 | INSERT EXEC 语句的事务已回滚。INSERT EXEC 操作将终止。
564 | 16 | 试图创建具有固定长度 ''%1!'' 的记录。所允许的固定长度最大值为 ''%2!''。
565 | 18 | 服务器在编译过程中遇到堆栈溢出。
566 | 21 | 写入审核跟踪时出错。SQL Server 即将关闭。
567 | 16 | 文件 %1! 不存在或不是可识别的跟踪文件。或者打开文件时发生错误。
568 | 16 | 服务器遇到错误 ''%1!''。
601 | 12 | 由于数据移动，未能继续以 NOLOCK 方式扫描。
602 | 21 | 未能在 sysindexes 中找到数据库 ID %1! 中对象 ID %2! 的索引 ID %3! 对应的行。请对 sysindexes 运行 DBCC CHECKTABLE。
604 | 21 | 未能在 sysobjects 中找到数据库 ''%2!'' 的对象 ID %1! 对应的行。请对 sysobjects 运行DBCC CHECKTABLE。
605 | 21 | 试图从数据库 ''%2!'' 中提取的逻辑页 %1! 属于对象 ''%4!''，而非对象 ''%6!''。
607 | 21 | 在对象 ''%1!'' 的会话描述符中，为搜索参数分配的空间不足。只分配了 %3! 个搜索参数的空间。
615 | 21 | 未能找到 ID 为 %1!、名称为 ''%2!'' 的数据库表。
617 | 20 | 试图对数据库 ID %2! 中对象 ID %1! 的描述符进行解哈希运算时，在哈希表中没有找到该描述符。
618 | 21 | 向 opentable 系统函数传递的 varno 参数值为 %1!。最大有效值为 %2!。
622 | 16 | 没有为文件组 ''%1!'' 指派文件。只有添加文件后，才能在此文件组上填充表、索引和 text、ntext 和 image 列。
623 | 21 | 未能从页中按 RID 检索行，因为逻辑页 %1! 不是数据页。%2!。%4!。
624 | 21 | 未能从页中按 RID 检索行，因为所请求的 RID 比页中最后一个 RID 的数值还高。%1!。%2!，DBID %3!。
625 | 21 | 无法从页 %1! 中按 RID 检索行，因为 slotid（%2!）无效。
626 | 16 | 不能在分布式事务内部使用带有保存点的 ROLLBACK。
627 | 16 | 不能在分布式事务内部使用 SAVE TRANSACTION。
628 | 13 | 没有活动事务时，不能发出 SAVE TRANSACTION。
635 | 20 | 进程 %1! 试图删除 DES 资源锁 %2!，但该锁并非由该进程控制。
637 | 20 | 索引收缩程序返回了无效的状态值 0。
639 | 21 | 未能提取数据库 ID %2! 的逻辑页 %1!。该页当前并未分配。
644 | 21 | 未能在索引页 %3! 中找到 RID ''%1!'' 的索引条目（索引 ID %4!，数据库 ''%5!''）。
649 | 21 | 未能找到页 %1! 的聚集索引条目（对象 ID %2!，状态 0x%3!）。搜索此条目时所用的索引页为数据库 ''%5!'' 中的 %4!。
650 | 16 | 在 READ COMMITTED 或 REPEATABLE READ 隔离级别上，只能指定 READPAST 锁。
651 | 16 | 不能在表 ''%2!'' 上使用 %1! 粒度提示，因为禁止在指定的粒度上进行锁定。
652 | 16 | 表 ''%2!'' 的索引 ID %1! 驻留在只读的文件组中，无法更改。
653 | 20 | 表 ''%1!'' 中同一保管槽的两个缓冲区发生冲突。
654 | 20 | 没有可供保管表 ''%1!'' 的缓冲区的可用槽。
655 | 20 | 本应在保管槽中找到表 ''%1!'' 的缓冲区。
666 | 16 | 表 ID %1! 的索引 ID %2! 中，用于重复组的系统生成唯一值超过了最大值。除去并重新创建该索引可能会解决该问题；否则可使用其它聚集键。
667 | 16 | 索引 %1!（属于表 ''%2!''）驻留在脱机文件组上，无法访问。
701 | 19 | 没有足够的系统内存来运行此查询。
708 | 10 | 警告:由于虚拟内存容量过低，启动过程中已 %1! 次使用特殊保留内存。请增加服务器上的虚拟内存。
802 | 17 | 无法再盗用更多的缓冲区。
804 | 20 | 在 SDES 0x%3! 为对象 ''%4!'' 所保管的缓冲区池中，未能找到控制逻辑页 %2! 的缓冲区 0x%1!。
809 | 20 | 在 PSS（进程状态结构）中的分配缓冲区池中，不存在数据库 ''%3!'' 中的缓冲区 0x%1!（分配页 %2!）。请与技术支持联系。
813 | 20 | 已对数据库 ID %2! 中的逻辑页 %1! 进行了哈希运算。
816 | 20 | 进程 ID %1! 试图删除缓冲区资源锁 %2!，但在 SDES %3! 中，该锁并非由该进程控制。请与技术支持联系。
818 | 19 | 在 SDES %2! 中没有用于控制缓冲区资源锁 %1! 的空间。请与技术支持联系。
821 | 20 | 未能对位于 0x%1!、缓冲区页号为 %2!、数据库 ID 为 %3!、设置了 HASHED 状态的缓冲区进行解哈希运算。没有找到该缓冲区。%4!。
822 | 21 | 未能为请求 %1! 启动 I/O。
823 | 24 | 在文件 ''%4!'' 的偏移量 %3! 处的 %2! 过程中，检测到 I/O 错误 %1!。
834 | 21 | 对脏缓冲区（页 %1!，stat %2!/%3!，objid %4!，sstat%5!）调用了系统函数 bufclean。
840 | 17 | 设备 ''%1!''（物理名称 ''%3!''，虚拟设备号 %5!）不可用。请与系统管理员联系以寻求协助。
844 | 10 | 等待缓冲区闩锁时发生超时，类型 %1!，bp %2!，页 %3!，stat %4!，对象 ID %5!:%6!:%7!，waittime %8!。将继续等待。
845 | 17 | 等待缓冲区闩锁时发生超时，类型 %1!，用于页 %2!，数据库 ID %3!。
901 | 21 | 对数据库 ID %1! 中对象 ID %2! 的描述符进行了哈希运算后，未能在哈希表中找到该描述符。
902 | 16 | 若要更改 %1!，数据库就必须处于可执行检查点的状态。
903 | 22 | 未能在 sysindexes 中找到数据库 ID %2! 中系统目录 %1! 上的聚集索引所对应的行。这一索引应存在于所有数据库中。请对该数据库中的 sysindexes 运行 DBCC CHECKTABLE。
906 | 22 | 未能在 sysobjects 中找到数据库 ''%3!'' 中系统目录 ''%1!'' 所对应的行。该系统目录应该存在于所有的数据库中。请对该数据库中的 sysobjects 运行 DBCC CHECKTABLE。
911 | 16 | 未能在数据库 "%1!" 的 sysdatabases 中找到条目。未找到具有该名称的条目。请确保正确地输入了名称。
913 | 22 | 未能找到 ID 为 %1! 的数据库。可能该数据库尚未激活，也可能正在转换过程中。
916 | 14 | 服务器用户 ''%1!'' 不是数据库 ''%3!'' 中的有效用户。
921 | 14 | 尚未恢复数据库 ''%1!''。请稍候再试。
922 | 14 | 正在恢复数据库 ''%1!''。请等待恢复操作完成。
923 | 14 | 数据库 ''%1!'' 处于受限模式。只有此数据库的所有者、dbcreator 或 sysadmin 角色的成员才能访问此数据库。
924 | 14 | 数据库 ''%1!'' 已打开，并且同一时刻只能有一个用户。
925 | 19 | 已超出了每个查询可使用的数据库数目的最大值。允许的最大值为 %1!。
926 | 14 | 无法打开数据库 ''%1!''。恢复操作已将该数据库标记为 SUSPECT。更多信息请参见 SQL Server 错误日志。
927 | 14 | 无法打开数据库 ''%1!''。该数据库正处于还原操作中途。
929 | 20 | 试图关闭尚未打开的数据库。请与技术支持联系。
941 | 14 | 无法打开数据库 ''%1!''。该数据库尚未升级到最新格式。
942 | 14 | 由于数据库 ''%1!'' 脱机，无法打开该数据库。
943 | 14 | 无法打开数据库 ''%1!''，因为该数据库的版本（%3!）晚于当前服务器版本（%4!）。
944 | 10 | 正在将数据库 ''%1!'' 由版本 %3! 转换为当前版本 %4!。
945 | 16 | 由于文件不可访问，或者内存或磁盘空间不足，所以无法打开数据库 ''%1!''。详细信息请参见 SQL Server 错误日志。
946 | 14 | 无法打开数据库 ''%1!''（版本 %3!）。请将该数据库升级为最新版本。
947 | 16 | 干净地关闭数据库 ''%1!'' 时出错。
948 | 14 | 无法升级数据库 ''%1!''。数据库的版本为 %3!，而此服务器所支持的版本为 %4!。
949 | 16 | 已跳过 tempdb。不能运行要求 tempdb 的查询
950 | 14 | 无法升级数据库 ''%1!'' — 数据库的版本（%3!）早于 SQL Server 7.0（%4!）。
951 | 10 | 数据库 ''%1!'' 正在运行从版本 %3! 到版本 %4! 的升级步骤。
952 | 16 | 数据库 ''%1!'' 正处于转换状态。请稍后再试该语句。
953 | 16 | 警告：数据库 ''%3!'' 中 ''%2!'' 上的索引 ''%1!'' 可能已损坏，原因是在此版本中表达式赋值已更改。除去并重新创建索引。


错误 1000 -1999

错误 | 严重度 | 描述（消息文本）
1001 | 16 | 第 %1! 行:长度或精度说明 %2! 无效。
1002 | 16 | 第 %1! 行:指定的小数位数 %2! 无效。
1003 | 15 | 第 %1! 行:%ls 子句仅允许用于 %3!。
1004 | 16 | 列前缀 ''%1!'' 无效:未指定表名
1005 | 15 | 第 %1! 行:过程号（%2!）无效。必须介于 1 到 32767 之间。
1006 | 15 | CREATE TRIGGER 不包含任何语句。
1007 | 15 | %1! ''%2!'' 超出了数字表示范围（最大精度为 38 位有效数字）。
1008 | 15 | ORDER BY 子句所标识的第 %1! 个 SELECT 项包含了一个变量，该变量位于标识列位置的表达式中。只有排序依据表达式引用的是列名时，才允许在该表达式中使用变量。
1010 | 15 | 无效转义符 ''%1!''。
1011 | 15 | 在 FROM 子句中多次指定了相关名称 ''%1!''。
1012 | 15 | 相关名称 ''%1!'' 与表 ''%3!'' 具有相同的表现名称。
1013 | 15 | 表或函数 ''%1!'' 和 ''%3!'' 具有相同的表现名称。请用相关名称区分它们。
1014 | 15 | TOP 子句含有无效的值。
1015 | 15 | 聚合不能出现在 ON 子句中，除非该子句位于 HAVING 子句或选择列表所包含的子查询中，并且所聚合的列是外部引用。
1016 | 15 | 在包含已联接的表的查询中，不能指定外联接运算符。
1019 | 15 | 在 GRANT/REVOKE 语句的对象名之后，列的列表无效。
1020 | 15 | 无法指定对象级权限的列的列表。
1021 | 10 | FIPS 警告:第 %1! 行有非 ANSI 语句 ''%2!''。
1022 | 10 | FIPS 警告:第 %1! 行有非 ANSI 子句 ''%2!''。
1023 | 15 | 为 %2! 指定了无效的参数 %1!。
1024 | 10 | FIPS 警告:第 %1! 行有非 ANSI 函数 ''%2!''。
1025 | 10 | FIPS 警告:标识符 ''%1!'' 的长度超过了 18。
1027 | 15 | GROUP BY 子句中指定的表达式太多。当指定了 CUBE 或 ROLLUP 时，最大数目为 %1!。
1028 | 15 | 在 GROUP BY ALL 子句中，不允许使用 CUBE 和 ROLLUP 选项。
1029 | 15 | 对于子查询和派生表，浏览模式无效。
1031 | 15 | 百分比值必须介于 0 到 100 之间。
1032 | 16 | 无法使用列前缀 ''%1!''。此前缀必须与 UPDATE 子句 ''%3!'' 中的对象匹配。
1033 | 16 | 除非同时指定了 TOP，否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。
1035 | 15 | ''%1!'' 附近有语法错误，需要 ''%3!''。
1036 | 15 | 在此 CREATE/ALTER DATABASE 语句中需要文件选项 %1!。
1037 | 15 | 不能对语句权限指定 CASCADE、WITH GRANT 或 AS 选项。
1038 | 15 | 不能使用空白的对象或列名。如果必要，请使用一个空格。
1039 | 16 | 多次指定了选项 ''%1!''。
1040 | 15 | 不允许在 CREATE/ALTER DATABASE 语句中混合使用新旧语法。
1041 | 15 | 对于 LOG 文件，不允许使用选项 %1!。
1042 | 15 | 指定了冲突的优化程序提示 %1!。
1043 | 15 | 尚未实现 ''%1!''。
1044 | 15 | 不能使用现有的函数名来指定存储过程名。
1045 | 15 | 在此上下文中不允许使用聚合。只允许使用标量表达式。
1046 | 15 | 在此上下文中不允许使用子查询。只允许使用标量表达式。
1047 | 15 | 指定了冲突的锁提示。
1048 | 15 | 游标选项 %1! 和 %2! 冲突。
1049 | 15 | 不允许混合使用新旧语法来指定游标选项。
1050 | 15 | 只有在存储过程 sp_executesql 内部才允许使用此语法。
1051 | 15 | 存储过程中的游标参数必须以 OUTPUT 和 VARYING 选项来声明，并且必须以下列顺序指定: CURSOR VARYING OUTPUT。
1052 | 15 | %1! 选项 %2! 和 %3! 冲突。
1053 | 15 | 必须为 DROP STATISTICS 以 tablename.column 的形式同时指定表名和列名。
1054 | 15 | 在绑定到架构的对象中不允许使用 ''%1!'' 语法。
1055 | 15 | ''%1!'' 是无效名称，因为该名称包含 NULL 字符。
1056 | 15 | 选择列表中元素的最大数目为 %1!，而您提供了 %2! 个。
1057 | 15 | IDENTITY 函数不能用于包含 UNION 运算符的 SELECT INTO 语句。
1058 | 15 | 在游标声明中不能同时指定 READ_ONLY 和 FOR READ ONLY。
1059 | 15 | 在过程内部不能设置或重置 %1! 选项。
1060 | 15 | TOP 子句中的行数必须是整数。
1061 | 16 | 尚未实现 text/ntext/image 常量。
1062 | 16 | 在没有对应的 ORDER BY 子句时，不允许使用 TOP N WITH TIES 子句。
1063 | 16 | 不能用 ALTER DATABASE ADD FILE 添加文件组。请使用 ALTER DATABASE ADD FILEGROUP。
1064 | 16 | 文件组不能用于日志文件。
1065 | 15 | 只有在 SELECT 语句中才允许使用 NOLOCK、READUNCOMMITTED 和 READPAST 锁提示。
1066 | 10 | 警告。第 %1! 行:选项 ''%2!'' 已过时，没有任何作用。
1067 | 15 | SET SHOWPLAN 语句必须是批处理中仅有的语句。
1068 | 16 | 每个表只允许有一个索引提示列表。
1069 | 16 | 只允许在 FROM 子句中使用索引提示。
1070 | 15 | 已不再支持 CREATE INDEX 选项 ''%1!''。
1071 | 16 | 无法对远程 JOIN 指定 JOIN 算法。
1072 | 16 | 只能对 INNER JOIN 子句指定 REMOTE 提示。
1073 | 15 | ''%1!'' 不是游标 %3! 的可识别游标选项。
1074 | 15 | 不允许创建临时函数。
1075 | 15 | 标量值的函数中的 RETURN 语句必须含有参数。
1076 | 15 | 函数 ''%1!'' 要求至少有 %2! 个参数。
1077 | 15 | 不允许向表变量 INSERT 标识列。
1078 | 15 | ''%1! %3!'' 不是可以识别的选项。
1079 | 15 | 通过游标访问时，变量无法用于在全文谓词中指定搜索条件。
1101 | 17 | 未能为数据库 ''%1!'' 分配新页。在文件组 %3! 中已没有更多的页可供使用。采取除去对象、添加另外的文件或允许文件增长等手段可创建空间。
1102 | 22 | IAM 页 %1!（用于对象 ID %2!）不正确。页上的 %3! ID 为 %4!；但应为 %5!。sysindexes 中的条目可能不正确，也可能 IAM 页有错误。
1103 | 21 | 数据库 ''%2!'' 中的分配页 %1! 与要分配的对象的段 ID 不同。请运行 DBCC CHECKALLOC。
1105 | 17 | 未能为数据库 ''%3!'' 中的对象 ''%1!'' 分配空间，因为文件组 ''%5!'' 已满。
1109 | 21 | 未能读取分配页 %1!，因为对象 ID（%2!）或页 ID（%3!）不正确。
1201 | 20 | 以不允许的模式 %1! 调用了 page_lock 系统函数。
1203 | 20 | 进程 ID %1! 试图解锁不属于该进程的资源 %2!。
1204 | 19 | SQL Server 此时无法获取 LOCK 资源。请在活动用户数较少时重新运行您的语句，或者请求系统管理员检查 SQL Server 锁和内存配置。
1205 | 13 | 事务（进程 ID %1!）与另一个进程已被死锁在资源 {%2!} 上，且该事务已被选作死锁牺牲品。请重新运行该事务。
1206 | 18 | 事务管理器已取消了分布式事务。
1211 | 13 | 已将进程 ID %1! 选作死锁牺牲品，并设置了 P_BACKOUT 位。
1220 | 17 | 事务中已没有更多的锁类。
1221 | 20 | 释放调用的锁类无效。
1222 | 13 | 已超过了锁请求超时时段。
1223 | 16 | 试图释放当前并未控制的应用程序锁 ''%1!''。
1501 | 20 | 排序失败。
1505 | 14 | CREATE UNIQUE INDEX 终止，因为发现了索引 ID %1! 的重复键。最重要的主键为 ''%2!''。
1507 | 10 | 警告:删除了重复的行。主键为 ''%1!''。
1508 | 14 | 由于发现重复行，CREATE INDEX 已终止。主键为 ''%1!''。
1509 | 20 | 行比较失败。
1510 | 17 | 排序失败。数据库 ''%1!'' 中的空间或锁已用尽。
1511 | 20 | 无法用事务日志调节排序。
1522 | 20 | 排序失败。已通过终止排序阻止了数据库 ''%1!'' 中分配页的重写。
1523 | 20 | 排序失败。已通过终止排序阻止了错误的扩展盘区解除分配。
1528 | 21 | 字符数据比较失败。在服务器范围的默认排序表的 SMEL 条目［%2!］处发现无法识别的 Sort-Map-Element 类型（%1!）。
1529 | 21 | 字符数据比较失败。服务器范围的默认排序表的 Sort-Map-Element 列表非正常结束。此列表开始于 SMEL 条目［%1!］。
1530 | 16 | 终止了带有 DROP_EXISTING 的 CREATE INDEX 语句，因为某一行次序有误。最重要的有问题主键为 ''%1!''。请改为显式除去并创建索引。
1531 | 16 | 如果键在表内不唯一，就不能对非聚集索引使用 SORTED_DATA_REORG 选项。已由于键重复而终止了 CREATE INDEX 语句。主键为 ''%1!''。
1532 | 20 | 从页 %1! 开始新的排序进程发现未标记为共享的扩展盘区。
1533 | 20 | 无法在八个以上的排序进程之间共享扩展盘区 %1!。
1534 | 20 | 在共享扩展盘区目录中没有找到扩展盘区 %1!。
1535 | 20 | 由于共享扩展盘区目录已满，无法共享扩展盘区 %1!。
1536 | 20 | 无法在仅存在于内存中的工作表上生成非聚集索引。
1537 | 20 | 无法挂起未处于行输入阶段的排序。
1538 | 20 | 无法对未处于行输入阶段的排序进行插入。
1540 | 16 | 无法对大小为 %1! 的行排序，该值大于允许的最大值 %2!。
1619 | 21 | 未能打开 tempdb。无法继续。
1620 | 21 | 无法启动 C2 审核跟踪。SQL Server 正在关闭。
1621 | 10 | 服务器以 '-f' 开头。将不启动审核。
1701 | 16 | 创建表 ''%1!'' 失败，因为行大小将为 %3!（包括内部开销），而该值超过了表中允许的最大行大小 %4!。
1702 | 16 | CREATE TABLE 失败，因为表 ''%3!'' 中的列 ''%1!'' 超过了列数目的最大值 %5!。
1703 | 17 | 未能为数据库 ''%1!'' 中的工作表分配磁盘空间。可以通过使用 BACKUP LOG 来释放空间，也可以通过使用 ALTER DATABASE 来扩展数据库的大小。
1704 | 16 | 只有 sysadmin 角色的成员才能创建系统表 ''%1!''。
1705 | 16 | 必须在 master 数据库中创建系统表 ''%1!''。
1706 | 16 | 未创建系统表 ''%1!''，因为未启用对系统目录的特殊更新。
1708 | 10 | 警告:已创建表 ''%1!''，但其最大行大小（%3!）超过了每行的最大字节数（%4!）。如果结果行长度超过 %1! 字节，则此表中行的 INSERT 或 UPDATE 将失败。
1709 | 16 | 当表中没有 text、ntext 或 image 列时，无法使用 TEXTIMAGE_ON。
1750 | 10 | 未能创建约束。请参见前面的错误。
1752 | 16 | 未能为列 ''%1!'' 创建 DEFAULT，因为该列不是表 ''%3!'' 中的有效列。
1753 | 16 | 列 ''%1!.%3!'' 与外键 ''%9!'' 中引用列 ''%5!.%7!'' 的长度不同。
1754 | 16 | 不能为具有 IDENTITY 特性的列创建默认值。表 ''%1!''，列 ''%3!''。
1755 | 16 | 不能为数据类型是 timestamp 的列创建默认值。表 ''%1!''，列 ''%3!''。
1756 | 10 | 正在跳过临时表的 FOREIGN KEY 约束 ''%1!'' 的定义。
1757 | 16 | 列 ''%1!.%3!'' 与外键 ''%9!'' 中的引用列 ''%5!.%7!'' 的排序规则不同。
1759 | 16 | 在约束或计算列的定义中指定了无效的列 ''%1!''。
1760 | 16 | 不能在类型为 %1! 的列上创建类型为 %2! 的约束。
1763 | 16 | 不支持跨数据库的外键引用。外键 ''%1!''。
1766 | 16 | 不支持对临时表的外键引用。外键 ''%1!''。
1767 | 16 | 外键 ''%1!'' 引用了无效的表 ''%3!''。
1768 | 16 | 外键 ''%1!'' 引用了对象 ''%3!''，但该对象不是用户表。
1769 | 16 | 外键 ''%1!'' 引用了位于引用表 ''%5!'' 中的无效列 ''%3!''。
1770 | 16 | 外键 ''%1!'' 引用了位于被引用表 ''%5!'' 中的无效列 ''%3!''。
1772 | 16 | 外键 ''%1!'' 在用户表和系统表之间定义了无效的关系。
1773 | 16 | 外键 ''%1!'' 隐性地引用了对象 ''%3!''，但在该对象上并未定义主键。
1774 | 16 | 外键 ''%1!'' 的引用列的列表中列数目与被引用表 ''%3!'' 中主键的列数目不匹配。
1776 | 16 | 在被引用表 ''%1!'' 中没有与外键 ''%3!'' 的引用列的列表匹配的主键或候选键。
1777 | 14 | 用户没有在被引用表 ''%1!'' 上创建外键 ''%3!'' 的正确权限。
1778 | 16 | 列 ''%1!.%3!'' 与外键 ''%9!'' 中引用列 ''%5!.%7!'' 的数据类型不同。
1779 | 16 | 已在表 ''%1!'' 上定义了主键。
1780 | 20 | 未能在 syscolumns 中找到与数据库 ID %3! 中对象 ID %2! 所对应的列 ID %1!。
1781 | 16 | 已在列上绑定了 DEFAULT。
1784 | 16 | 无法创建外键 %1!，因为所引用的列 %3!.%5! 不是计算出的列。
1785 | 16 | 将 FOREIGN KEY 约束 ''%1!'' 引入表 ''%3!'' 中将导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION，或修改其它 FOREIGN KEY 约束。
1786 | 16 | 列 ''%1!.%3!'' 或引用列 ''%5!.%7!''（位于外键 ''%9!'' 中）是 timestamp 列。此数据类型不能用于级联引用完整性约束。
1787 | 16 | 无法定义带有级联 DELETE 或 UPDATE 的外键约束 ''%1!''（在表 ''%3!'' 上），因为该表上定义了 INSTEAD OF DELETE 或 UPDATE TRIGGER。
1788 | 16 | 无法创建级联外键 ''%1!''，该处的引用列 ''%3!.%5!'' 为标识列。
1801 | 16 | 数据库 ''%1!'' 已存在。
1802 | 11 | CREATE DATABASE 失败。未能创建所列出的某些文件名。请检查前面的错误信息。
1803 | 17 | CREATE DATABASE 失败。未能在指定的磁盘上为新数据库分配足够的磁盘空间。所分配的空间总大小必须至少为 %1! MB 时，才能容纳 model 数据库的一份复本。
1804 | 10 | 没有名为 ''%1!'' 的磁盘。正在检查其它磁盘名称。
1805 | 10 | CREATE DATABASE 进程正在磁盘 ''%2!'' 上分配 %1! MB 的空间。
1806 | 16 | CREATE DATABASE 失败。无法将数据库 ''%1!'' 的默认排序规则设置为 ''%3!''。
1807 | 17 | 未能获得数据库 ''%1!'' 上的排它锁。请稍后重试操作。
1808 | 21 | 不支持默认设备。
1809 | 10 | 若要获得最佳性能，请通过运行 sp_updatestats 更新 ''%1!'' 数据库上的所有统计。
1811 | 16 | ''%1!'' 设备的类型对 CREATE DATABASE 或 ALTER DATABASE 而言不正确。请检查 sysdevices。该语句将终止。
1812 | 16 | CREATE DATABASE 失败。不能使用带有 FOR ATTACH 选项的 COLLATE 子句。
1813 | 16 | 未能打开新数据库 ''%1!''。CREATE DATABASE 将终止。
1814 | 10 | 未能创建 tempdb。如果空间太少，请扩展空间容量后重新启动。
1901 | 16 | 列 ''%1!''。不能在数据类型为 bit 的列上创建索引。
1902 | 16 | 不能在表 ''%1!'' 上创建多个聚集索引。请在创建新聚集索引前除去现有的聚集索引 ''%3!''。
1903 | 16 | 索引键太大。表示索引 %2! 的键所需的 %1! 字节超过了 %3! 字节的大小限制。
1904 | 16 | 为统计或索引键列表指定的列名不能超过 %1! 个。指定了 %2! 个。
1905 | 21 | 在 sysindexes 表中未能找到索引 ''%1!'' 的 ''零'' 行。
1906 | 11 | 无法在 ''%1!'' 上创建索引，因为此表在数据库 ''%3!'' 中不存在。
1907 | 16 | 无法重新创建索引 %1!。新的索引定义与现有索引所规定的约束不匹配。
1909 | 16 | 不能在索引键列表中使用重复的列名称。列名 ''%1!'' 多次列出。
1910 | 16 | 在一个表上创建的非聚集索引或列统计不能超过 %1! 个。
1911 | 16 | 目标表中不存在列名 ''%1!''。
1913 | 16 | 表 ''%1!'' 已有一个名为 ''%3!'' 的索引。
1914 | 16 | 无法在对象 ''%1!'' 上创建索引，因为该对象不是用户表或视图。
1916 | 16 | CREATE INDEX 选项 %1! 和 %2! 是互斥的。
1918 | 10 | 正在重建索引（ID = %1!）。
1919 | 16 | 列 ''%1!''。不能在数据类型为 text、ntext 或 image 的列上创建索引。
1920 | 10 | 跳过索引 ID %1! 的重建，该索引位于只读文件组中。
1921 | 16 | 指定的文件组 ''%1!'' 无效。
1922 | 16 | 没有为文件组 ''%1!'' 指派文件。无法在此文件组上创建表、索引和 text、ntext 和 image 列。
1923 | 10 | 聚集索引已除去。
1938 | 16 | 无法在 %1!''%2!'' 上创建索引，因为基础对象 ''%4!'' 的所有者不同。
1939 | 16 | 无法在视图 ''%2!'' 上创建 %1!，因为该视图未绑定到架构。
1940 | 16 | 无法在视图 ''%2!'' 上创建 %1!。该视图没有唯一的聚集索引。
1941 | 16 | 无法在视图 ''%1!'' 上创建非唯一的聚集索引，因为只允许使用唯一聚集索引。
1942 | 16 | 无法在视图 ''%1!'' 上创建索引，因为该视图包含 text、ntext 或 image 列。
1943 | 16 | 无法在视图 ''%1!'' 上创建索引，因为该视图有一个或多个不具有确定性的表达式。
1944 | 16 | 未创建索引 ''%1!''。此索引有一个键的长度至少为 %3! 字节。可允许的最大键长度为 %4! 字节。
1945 | 16 | 警告！可允许的最大键长度为 %4! 字节。索引 ''%2!'' 的最大长度为 %4! 字节。对于较大值的某些组合，插入/更新操作将失败。
1946 | 16 | 操作失败。%1! 字节的索引条目长度（属于索引 ''%2!''）超过了 %4! 字节的最大长度。
1947 | 16 | 无法在视图 ''%1!'' 上创建索引，因为该视图在 ''%3!'' 上有自链接。
1948 | 16 | 检测到重复的索引名称 ''%1!'' 和 ''%3!''（位于表 ''%5!'' 上）。
1949 | 16 | 无法在视图 ''%1!'' 上创建索引，因为函数 ''%3!'' 生成具有不确定性的结果。
1950 | 16 | 无法在视图 ''%1!'' 上创建索引，因其在 GROUP BY 子句中包含不精确的表达式
1951 | 16 | 无法在视图 ''%1!'' 上创建索引，因其在 WHERE 子句中包含不精确的表达式。
1952 | 16 | 无法在视图 ''%1!'' 上创建索引，因其在某个联接中包含不精确的表达式。
1953 | 16 | 无法在视图 ''%1!'' 上创建索引，因为内置函数缺少某些参数。
1954 | 16 | 无法在视图 ''%1!'' 上创建索引，因其使用与某个规则相关联的列。
1955 | 16 | 无法在视图 ''%1!'' 上创建索引，因其包含具有不确定性的计算列。
1956 | 16 | 无法在视图 ''%1!'' 上创建索引，因其使用具有不确定性的用户定义函数。
1957 | 16 | 无法在视图 ''%1!'' 上创建索引，因其需要进行涉及日期或变量的转换。
1958 | 16 | 此版本的 SQL Server 不支持索引视图。
1959 | 16 | 无法在视图或计算列上创建索引，因为此数据库不与 SQL Server 兼容。


错误 2000 -2999

错误 | 严重度 | 描述（消息文本）
2001 | 10 | 不能使用重复参数名。参数名 ''%1!'' 多次列出。
2004 | 16 | 已经用组号 %3! 创建了过程 ''%1!''。请用未使用过的组号创建过程。
2007 | 11 | 无法在 sysdepends 中添加当前存储过程所对应的行，因为缺少该存储过程所依赖的对象 ''%1!''。仍将创建该存储过程。
2008 | 16 | 对象 ''%1!'' 不是过程，所以不能在该组名称下创建另一个过程。
2009 | 10 | 已创建了过程 ''%1!''，而未顾及延迟的名称解析警告（如果有警告）。
2010 | 16 | 无法在 %1! 上执行更改操作，因为其对象类型不兼容。
2011 | 16 | 在绑定到架构的对象中不能指定索引提示。
2012 | 16 | 在绑定到架构的对象中不能声明用户定义的变量。
2106 | 11 | 无法在表 ''%1!'' 上创建触发器，因为该表在数据库 ''%3!'' 中不存在。
2108 | 16 | 无法在表 ''%1!'' 上创建触发器，因为只能在当前数据库中的表上创建触发器。
2110 | 16 | 无法为表 ''%3!'' 更改触发器 ''%1!''，因为此触发器不属于此表。
2111 | 16 | 无法 %1! 触发器 ''%2!''（%4! ''%5!''），因为已存在 INSTEAD OF %7! 触发器。
2112 | 16 | 无法 %1! 触发器 ''%2!''（属于视图 ''%4!''），因为定义该视图时使用了 CHECK OPTION。
2113 | 16 | 无法 %1! INSTEAD OF DELETE 或 UPDATE TRIGGER ''%2!''（在表 ''%4!'' 上），因为该表的 FOREIGN KEY 带有级联 DELETE 或 UPDATE。
2114 | 16 | 无法将列 ''%1!'' 用在 IF UPDATE 子句中，因为该列是计算列。
2501 | 16 | 未能找到名为 ''%1!'' 的表或对象。请检查 sysobjects。
2502 | 16 | 未能启动事务。
2503 | 10 | 成功地删除了物理文件 ''%1!''。
2504 | 16 | 未能删除物理文件 ''%1!''。系统函数 DeleteFile 返回了错误 %2!。
2505 | 16 | 设备 ''%1!'' 不存在。请用 sp_helpdevice 来显示可用的设备。
2506 | 16 | 未能在数据库 ''%3!'' 中找到表或对象名 ''%1!''。
2511 | 16 | 表错误:对象 ID %1!，索引 ID %2!。在页 %3! 上的槽 %4! 和 %5! 处发生键次序错误。
2512 | 16 | 表错误:对象 ID %1!，索引 ID %2!。在页 %3! 槽 %4! 和页 %5! 槽 %6! 上有重复键。
2513 | 16 | 表错误:对象 ID %1!（对象 ''%2!''）在 ''%4!'' 与 ''%6!'' 之间不匹配。
2514 | 16 | 表错误:数据类型 %1!（类型 ''%2!''）在 ''%4!'' 与 ''%6!'' 之间不匹配。
2515 | 16 | 页 %1!，对象 ID %2!，索引 ID %3! 已更改，但在差异备份位图中未标记为已更改。
2516 | 16 | 数据库 %1! 的差异位图已作废。需要执行完整的数据库备份后，才能执行差异备份。
2517 | 16 | 已打开了数据库 %1! 的最小日志记录操作状态。请重新运行备份日志操作，以确保所有数据都得到保护。
2519 | 16 | 无法处理表 %1!，因为文件组 %3! 无效。
2520 | 16 | 未能找到数据库 ''%1!''。请检查 sysdatabases。
2521 | 16 | 未能找到数据库 ID %1!。请检查 sysdatabases。
2522 | 16 | 无法处理表 %3! 的索引 %1!，因为文件组 %5! 无效。
2523 | 16 | 文件组 %1! 无效。
2524 | 16 | 无法处理表 %1!，因为文件组 %3! 脱机。
2525 | 16 | 数据库文件 %1! 脱机。
2526 | 16 | DBCC 语句错误。请查阅文档以了解正确的 DBCC 语法和选项。
2527 | 16 | 无法处理表 %3! 的索引 %1!，因为文件组 %5! 脱机。
2528 | 10 | DBCC 执行完毕。如果 DBCC 输出了错误信息，请与系统管理员联系。
2529 | 16 | 文件组 %1! 脱机。
2530 | 16 | 辅助索引条目缺少或与表中的数据不匹配。请使用 WITH TABLOCK 选项并再次运行该命令，以显示失败的记录。
2531 | 16 | 表错误:对象 ID %1!，索引 ID %2! 的 B 树级别不匹配，页 %3!。级别 %4! 与级别 %5!（来自上一页 %6!）不匹配。
2532 | 16 | DBCC SHRINKFILE 未能收缩文件 %1!。不支持日志文件。
2533 | 16 | 表错误:未发现页 %1!，该页分配给了对象 ID %2!，索引 ID %3!。可能页无效或页首结构中的对象 ID 信息不正确。
2534 | 16 | 表错误:页 %1! 的页首结构中对象 ID 为 %2!，索引 ID 为 %3!，但另一个对象分配了该页。
2535 | 16 | 表错误:页 %1! 分配给了对象 ID %2!，索引 ID %3!，而不是页首结构中所指明的对象 ID %4!，索引 ID %5!。
2536 | 10 | ''%1!'' 的 DBCC 结果。
2537 | 16 | 表错误:对象 ID %1!，索引 ID %2!，页 %3!，行 %4!。记录检查（%5!）失败。值为 %5! 和 %6!。
2538 | 10 | 文件 %1!。扩展盘区数目 = %2!，已用页数目 = %3!，保留页数目 = %4!。
2539 | 10 | 此数据库中扩展盘区总数 = %1!，已用页总数 = %2!，保留页总数 = %3!。
2540 | 10 | 系统无法自修复此错误。
2541 | 10 | DBCC UPDATEUSAGE:已更新了 sysindexes 中对应于表 ''%1!'' 的行（索引 ID %3!）:
2542 | 10 | DATA 页: 已从 %1! 页更改为 %2! 页。
2543 | 10 | USED 页: 已从 %1! 页更改为 %2! 页。
2544 | 10 | RSVD 页: 已从 %1! 页更改为 %2! 页。
2545 | 10 | ROWS 数:已从 %1! 行更改为 %2! 行。
2546 | 10 | 索引 ''%1!''（属于表 ''%3!''）已标记为脱机。请重建该索引以使之联机。
2547 | 10 | 执行第二阶段索引检查。
2548 | 10 | DBCC:索引 ''%1!'' 的压缩阶段已完成 %3!%%。
2549 | 10 | DBCC:索引 ''%1!'' 的碎片整理阶段已完成 %3!%%。
2557 | 14 | 用户 ''%1!'' 没有对对象 ''%5!'' 运行 DBCC %3! 的权限。
2559 | 16 | 不允许在同一条语句中使用 ''%1!'' 和 ''%2!'' 选项。
2560 | 16 | 对于此 DBCC 语句，参数 %1! 不正确。
2562 | 16 | ''%1!'' 无法访问对象 ''%2!''，因为该对象不是表。
2566 | 14 | DBCC DBREINDEX 不能用于系统表。
2567 | 14 | 不能对系统表的索引使用 DBCC INDEXDEFRAG
2568 | 16 | 页 %1! 超出了此数据库的范围，或位于日志文件中。
2570 | 16 | 警告:页 %1!，对象 %3! 中的槽 %2! 索引 %4! 列 %5! 的值 %7! 不在数据类型 "%9!" 范围内。请将列的值更新为合法值。
2571 | 14 | 用户 ''%1!'' 没有运行 DBCC %3! 的权限。
2572 | 16 | DBCC 无法释放 DLL ''%1!''。该 DLL 正在使用。
2573 | 16 | 数据库 ''%1!'' 未标记为置疑。不能用 DBCC 除去该数据库。
2574 | 10 | 对象 ID %1!，索引 ID %2!:页 %3! 为空白。这在 B 树的级别 %4! 上是不允许的。
2575 | 16 | IAM 页 %2!（对象 ID %3!，索引 ID %4!）的下一页指针指向了 IAM 页 %1!，但在扫描过程中未检测到该页。
2576 | 16 | IAM 页 %2!（对象 ID %3!，索引 ID %4!）的上一页指针指向了 IAM 页 %1!，但在扫描过程中未检测到该页。
2577 | 16 | 对象 ID %1! 索引 ID %2! 的 IAM 链的链序列号次序有误。页 %3! 序列号 %4! 指向了页 %5! 序列号 %6!。
2578 | 16 | 在开始于页 %1! 的 GAM 间隔中发现最小日志记录的扩展盘区，但在数据库表中却未设置最小日志记录标志。
2579 | 16 | 表错误：扩展盘区 %1!（对象 ID %2!，索引 ID %3!）不在此数据库范围内。
2580 | 16 | 表 ''%1!'' 是系统表或临时表。DBCC CLEANTABLE 不能应用于系统表或临时表。
2583 | 16 | 向 DBCC 语句提供的参数数目不正确。
2588 | 16 | 页 %1! 应为 text、ntext 或 image 值的第一页。
2590 | 10 | 用户 ''%1!'' 正在更改数据库 ''%6!'' 中页 %5! 的第 %3! 字节至第 %4! 字节。
2591 | 16 | 未能在 sysindexes 中找到表 ''%2!'' 中索引 ID %1! 所对应的行。
2592 | 10 | 成功地还原了数据库 ''%4!'' 中对象 ''%2!'' 的 %1! 索引。
2593 | 10 | 对象 ''%3!'' 有 %1! 行，这些行位于 %2! 页中。
2594 | 16 | 指定的索引 ID（%1!）无效。
2595 | 16 | 执行此语句前，必须将数据库 ''%1!'' 设置为单用户模式。
2597 | 16 | 数据库未打开。请执行 ''USE %1!'' 语句，然后重新运行该 DBCC 语句。
2598 | 16 | sysobjects 和 sysindexes 上的聚集索引不能重新创建。
2601 | 14 | 不能在具有唯一索引 ''%3!'' 的对象 ''%1!'' 中插入重复键的行。
2603 | 21 | 在索引页上插入行时，对象 ''%3!'' 中索引 ID %2! 的逻辑页 %1! 上已没有空间。这种情况在遍历索引时应已处理。
2617 | 20 | 在对象 ''%2!'' 的 SDES 中的保管池中，没有找到控制逻辑页 %1! 的缓冲区。请与技术支持联系。
2624 | 21 | 未能在表 %1! 中插入，因为行长度 %2! 小于最小长度 %3!。
2627 | 14 | 违反了 %1! 约束 ''%2!''。不能在对象 ''%4!'' 中插入重复键。
2701 | 10 | 忽略了数据库名称 ''%1!''，将引用 tempdb 中的对象。
2702 | 16 | 数据库 ''%1!'' 不存在。
2705 | 16 | 各表中的列名必须唯一。在表 ''%3!'' 中多次指定了列名 ''%1!''。
2706 | 11 | 表 ''%1!'' 不存在。
2710 | 16 | 您不是此语句（CREATE、ALTER、TRUNCATE、UPDATE STATISTICS 或 BULK INSERT）中为对象 ''%1!'' 指定的所有者。
2714 | 16 | 数据库中已存在名为 ''%1!'' 的对象。
2715 | 16 | 第 %1! 个列或参数:无法找到数据类型 %2!。
2716 | 16 | 第 %1! 个列或参数:不能对数据类型 %2! 指定列宽度。
2717 | 15 | 赋予 %2! ''%3!'' 的大小（%1!）超过了最大允许值（%5!）。
2718 | 16 | 第 %1! 个列或参数:不能对数据类型为 bit 的列指定空值。
2721 | 11 | 未能找到用于创建表的默认段。请要求系统管理员在 syssegments 中指定默认段。
2724 | 10 | 参数 ''%1!'' 的数据类型无效。
2727 | 11 | 无法找到索引 ''%1!''。
2730 | 11 | 无法用组号 %3! 创建过程 ''%1!''，因为数据库中当前并不存在组号为 1 的同名过程。必须首先执行 CREATE PROCEDURE '%4!';1。
2731 | 16 | 列 ''%1!'' 的宽度 %3! 无效。
2732 | 16 | 错误 %1! 无效。错误号必须介于 %2! 到 %3! 之间
2734 | 16 | 在 sysusers 中不存在用户名 ''%1!''。
2736 | 16 | 指定的所有者名称是组名。对象的所有者不能是组。
2737 | 16 | 传递给 %1! 的消息必须是 char、varchar、nchar 或 nvarchar 类型。
2738 | 16 | 一个表只能有一个时间戳列。因为表 ''%1!'' 已经有了一个时间戳列，所以无法添加列 ''%3!''。
2739 | 16 | 对于局部变量，text、ntext 和 image 数据类型无效。
2740 | 16 | SET LANGUAGE 失败，因为在此 SQL Server 上，''%1!'' 不是正式的语言名称或语言别名。
2741 | 16 | SET DATEFORMAT 日期次序 ''%1!'' 无效。
2742 | 16 | SET DATEFIRST %1! 越界。
2743 | 16 | %1! 语句要求 %2! 参数。
2744 | 16 | 为表 ''%1!'' 指定了多个标识列。每个表只允许指定一个标识列。
2745 | 10 | 进程 ID %1! 引起了用户错误 %2!，严重度 %3!。SQL Server 将终止此进程。
2746 | 16 | 不能指定长度超过 %1! 字节的用户错误格式字符串。
2747 | 16 | RAISERROR 的替代参数太多。替代参数不能超过 %1! 个。
2748 | 16 | 不能将 %1! 数据类型（RAISERROR 参数 %2!）指定为 RAISERRROR 的替代参数。
2749 | 16 | 标识列 ''%1!'' 的数据类型必须是 int、bigint、smallint、tinyint 或 decimal 数据类型，或者小数位数为 0 的 numeric 数据类型，并且约束不可为空。
2750 | 16 | 第 %1! 个列或参数:指定的列精度 %2! 大于最大精度 %3!。
2751 | 16 | 第 %1! 个列或参数:指定的列小数位数 %2! 大于指定的精度 %3!。
2752 | 16 | 标识列 ''%1!'' 包含的 SEED 无效。
2753 | 16 | 标识列 ''%1!'' 包含的 INCREMENT 无效。
2754 | 16 | 大于 %1! 的错误严重级别只能由 sysadmin 角色的成员用 WITH LOG 选项指定。
2755 | 16 | SET DEADLOCK_PRIORITY 选项 ''%1!'' 无效。
2756 | 16 | %d 是无效的状态值。有效范围是从 %2! 到 %3!。
2757 | 16 | 由于错误 %1!、严重度 %2!、状态 %3! 的参数替代无效，RAISERROR 失败。
2758 | 16 | %1! 无法在 sysmessages 中找到错误 %2! 所对应的条目。
2759 | 0 | 由于前面的错误，CREATE SCHEMA 失败。
2760 | 16 | 指定的所有者名称 ''%1!'' 不存在，或者您没有使用该名称的权限。
2761 | 16 | 只能以 uniqueidentifier 数据类型来指定 ROWGUIDCOL 属性。
2762 | 16 | 未能正确地唤醒调用 sp_setapprole。更多信息请参见文档。
2763 | 16 | 未能找到应用程序角色 ''%1!''。
2764 | 16 | 为应用程序角色 ''%1!'' 提供的密码不正确。
2765 | 15 | 未能在系统目录中找到列 ''%1!'' 的统计。
2766 | 16 | 用户定义的数据类型 ''%1!'' 的定义已更改。
2767 | 15 | 未能在系统目录中找到统计 ''%1!''。
2768 | 15 | %1! ''%2!'' 的统计。
2769 | 15 | 列 ''%1!''。无法在数据类型为 %3! 的列上创建统计。
2770 | 16 | SELECT INTO 语句的源表和目的表不能相同。
2771 | 16 | 无法在表 ''%1!'' 上创建统计。此表为虚拟系统表。
2772 | 16 | 无法从函数中访问临时表。
2773 | 16 | 排序次序 ID %1! 无效。
2774 | 16 | 排序规则 ID %1! 无效。
2775 | 16 | 操作系统不支持代码页 %1!。
2777 | 17 | 数据库 ''%1!'' 包含的列或参数具有操作系统所不支持的下列代码页:%ls。
2801 | 16 | 对象 ''%1!'' 的定义在编译后已有更改。
2809 | 18 | %1! ''%2!'' 的请求失败，因为 ''%4!'' 是 %6! 对象。
2812 | 16 | 未能找到存储过程 ''%1!''。


错误 3000 -3999

错误 | 严重度 | 描述（消息文本）
3009 | 16 | 未能在 msdb 数据库中插入备份或还原历史/详细记录。这可能表明 msdb 数据库有问题。备份/还原操作仍是成功的。
3011 | 16 | 所有备份设备都必须属于同一大类（例如 DISK 和 TAPE）。
3013 | 16 | %1! 操作异常终止。
3014 | 10 | %1! 操作成功地处理了 %2! 页，花费了 %3!.%4! 秒（%5!.%6! MB/秒）。
3015 | 10 | %1! 尚未实现。
3016 | 16 | 自此备份或还原操作中断以来，数据库 ''%2!'' 的文件 ''%1!'' 已删除或收缩。此操作无法重新启动。
3017 | 16 | 未能重新开始被中断的备份或还原操作。更多信息请参见 SQL Server 错误日志。
3018 | 16 | 没有可以重新启动的被中断备份或还原操作。请去掉 RESTART 子句后重新发出该语句。
3019 | 16 | 该检查点文件属于另一个备份或还原操作。请去掉 RESTART 子句后重新发出该语句。
3020 | 16 | 由于日志已截断，备份操作无法重新启动。请去掉 RESTART 子句后重新发出该语句。
3021 | 16 | 不能在事务内部执行备份或还原操作。
3023 | 16 | 对数据库的备份和文件操作（如 ALTER DATABASE ADD FILE）必须串行化。请在当前备份或文件操作完成后重新发出该语句。
3024 | 16 | 只能对 master 数据库执行完整备份。请使用 BACKUP DATABASE 来备份整个 master 数据库。
3025 | 16 | 缺少数据库名称。请重新发出该语句并在语句中指定有效数据库名称。
3026 | 16 | 未能在 sysfilegroups 中找到数据库 ''%2!'' 的文件组 ID %1!。
3027 | 16 | 未能在 sysfilegroups 中找到数据库 ''%3!'' 的文件组 ''%1!''。
3028 | 16 | 操作检查点文件无效。未能重新启动操作。请去掉 RESTART 选项后重新发出该语句。
3031 | 16 | 选项 ''%1!'' 与选项 ''%2!'' 冲突。请删除冲突的选项，然后重新发出该语句。
3032 | 16 | 一个或多个选项（%1!）不支持该语句。请查阅文档以了解所支持的选项。
3033 | 16 | BACKUP DATABASE 不能用于以紧急模式打开的数据库。
3034 | 16 | 未选中要处理的文件。您可能选中了一个或多个没有成员的文件组。
3035 | 16 | 无法执行数据库 ''%1!'' 的差异备份，因为不存在当前数据库备份。请去掉 WITH DIFFERENTIAL 选项后重新发出 BACKUP DATABASE，以执行数据库的完整备份。
3036 | 16 | 数据库 ''%1!'' 处于备用状态（通过执行 RESTORE WITH STANDBY 而设置）下，只有整个装载序列完成后，才能进行备份。
3037 | 16 | 在此 WITH RESTART 命令之前已发生最小日志记录操作。请去掉 WITH RESTART 后重新发出 BACKUP 语句。
3038 | 16 | 文件名 ''%1!'' 用作备份设备名时无效。请用有效文件名重新发出 BACKUP 语句。
3039 | 16 | 无法执行文件 ''%1!'' 的差异备份，因为不存在当前文件备份。请去掉 WITH DIFFERENTIAL 选项后重新发出 BACKUP DATABASE。
3040 | 10 | 向复制通知备份时出错。备份将继续，但复制环境应受检查。
3041 | 16 | BACKUP 未能完成命令 %1!
3101 | 16 | 因为数据库正在使用，所以未能获得对数据库的排它访问权。
3108 | 16 | 当试图还原 master 数据库时，必须以单用户模式使用 RESTORE DATABASE。
3110 | 14 | 用户没有 RESTORE 数据库 ''%1!'' 的权限。
3112 | 16 | 当服务器处于单用户模式下时，不能还原除 master 数据库之外的任何其它数据库。
3113 | 21 | 在数据库 ''%1!'' 的 sysusers 中没有数据库所有者 (DBO) 的条目。
3114 | 21 | 在 sysdatabases 中没有数据库 ''%1!'' 的条目。
3123 | 16 | 为备份或还原操作指定的数据库名称 ''%1!'' 无效。
3127 | 16 | 临时消息：备份集不包含文件 ''%1!'' 的页。
3128 | 16 | 不支持文件 ''%1!'' 的页大小（%2!）。
3129 | 16 | 临时消息：文件 ''%1!'' 的大小已从 %2! 字节变为 %3! 字节。
3132 | 16 | 数据库 ''%1!'' 的媒体集有 %2! 个家族成员，但只提供了 %3! 个。必须提供所有的成员。
3133 | 16 | 设备 ''%1!'' 上的卷不是媒体家族的成员。
3135 | 16 | 文件 ''%1!'' 中的备份集是由 %2! 创建的，无法用于此还原操作。
3136 | 16 | 无法将设备 ''%1!'' 上的备份应用于数据库 ''%2!''。
3138 | 16 | 备份集中的一个或多个文件已不再是数据库 ''%1!'' 的一部分。
3140 | 16 | 未能调整文件 ''%1!'' 的空间分配。
3141 | 16 | 要还原的数据库先前命名为 ''%1!''。请重新发出该语句，用 WITH REPLACE 选项以重写数据库 ''%2!''。
3142 | 16 | 无法在已有的 ''%2!'' 上还原文件 ''%1!''。请重新发出 RESTORE 语句，用 WITH REPLACE 来重写原先存在的文件。
3143 | 16 | 设备 ''%1!'' 上的数据集不是 SQL Server 备份集。
3144 | 16 | 文件 ''%1!'' 未曾备份到设备 ''%4!'' 上的文件 %3! 中。无法从此备份集中还原该文件。
3145 | 16 | 对于 RESTORE DATABASE，不支持 STOPAT 选项。可将 STOPAT 选项用于 RESTORE LOG。
3146 | 16 | 进行备份操作后，尚未更改过任何新还原的文件，所以不需要再进行进一步的恢复操作。该数据库现在即可使用。
3147 | 16 | 不允许对 tempdb 数据库进行备份或还原操作。
3148 | 16 | 尚未实现 ALTER DATABASE 的媒体恢复。无法前滚该数据库。
3150 | 10 | 已成功地还原了 master 数据库。正在关闭 SQL Server。
3151 | 21 | master 数据库还原失败。请用 rebuildm 实用工具来重建 master 数据库。正在关闭 SQL Server。
3234 | 15 | 逻辑文件 ''%1!'' 不是数据库 ''%3!'' 的一部分。请使用 RESTORE FILELISTONLY 来列出逻辑文件名。
3241 | 16 | 设备 ''%1!'' 上的媒体家族的结构不正确。SQL Server 无法处理此媒体家族。
3242 | 16 | 设备 ''%1!'' 的文件不是有效的 Microsoft 磁带格式备份集。
3243 | 16 | 设备 ''%1!'' 上的媒体家族是用版本为 %2!.%3! 的 Microsoft 磁带格式创建的。SQL Server 支持的版本为 %4!.%5!。
3244 | 16 | 描述符块大小超过了 %1! 字节。请使用较短的名称和/或描述字符串，然后重试该操作。
3245 | 16 | 未能在普通字符串和 Unicode 字符串之间转换，%1!。
3246 | 16 | 设备 ''%1!'' 上的媒体家族标记为不可追加。请用 INIT 选项重新发出该语句以重写媒体。
3247 | 16 | 设备 ''%1!'' 上的卷的媒体序列号（%2!）错误。请取出该卷并插入卷 %3!。
3248 | 25 | >>> VOLUME SWITCH <<< （不用于输出！）
3249 | 16 | 设备 ''%1!'' 上的卷是备份集的延续卷。请取出该卷并插入包含备份集开始部分的卷。
3250 | 16 | 值 ''%1!'' 不在参数 %2! 的取值范围内。
3251 | 10 | 设备 ''%1!'' 上的媒体家族已完成。该设备现在正重新用于其余家族之一。
3253 | 16 | 块大小参数提供的值必须是 2 的幂。
3254 | 16 | 设备 ''%1!'' 上的卷为空白。
3255 | 16 | 设备 ''%1!'' 上的数据集是 SQL Server 备份集，但该备份集与此版本的 SQL Server 不兼容。
3256 | 16 | 设备 ''%1!'' 上的备份集在创建时被终止，该备份集不完整。RESTORE 序列已异常终止。
3257 | 16 | 磁盘卷 ''%1!'' 上的剩余空间不足，无法创建数据库。数据库尚需 %2! 字节的可用空间，但只有 %3! 字节可用。
3258 | 16 | 设备 ''%1!'' 上的卷属于另一个媒体集。
3259 | 16 | 设备 ''%1!'' 上的卷不是多家族媒体集的一部分。可用 BACKUP WITH FORMAT 来构造新的媒体集。
3260 | 16 | 内部缓冲区已满。
3261 | 16 | SQL Server 无法使用虚拟设备配置。
3262 | 10 | 备份集有效。
3263 | 16 | 无法将设备 ''%1!'' 上的卷用作延续卷。其序列号为 %2!，属于当前媒体集的家族 %3!。请插入新卷，或序列号为 %4!、属于当前媒体集的家族 %5!。
3264 | 16 | 该操作尚未进行到允许 RESTART 的程度。请去掉 RESTART 限定符后重新发出该语句。
3265 | 16 | 该登录没有足够的权限。需要有 sysadmin 角色的成员资格才能将 VIRTUAL_DEVICE 用于 BACKUP 或 RESTORE。
3266 | 10 | ''%1!'' 中的备份数据未正确格式化。备份不能追加，但现有备份集可能仍可用。
3267 | 16 | 资源不足，无法创建 UMS 调度程序。
3268 | 16 | 无法使用备份文件 ''%1!''，因为原先格式化该文件时所用扇区大小为 %2!，而目前所在设备的扇区大小为 %3!。
3269 | 16 | 无法还原文件 ''%1!''，因为原先写入该文件时所用扇区大小为 %2!，而目前 ''%3!'' 所在设备的扇区大小为 %4!。
3270 | 16 | 发生内部一致性错误。请与技术支持联系以寻求协助。
3271 | 16 | 在文件 ''%1!'' 上发生不可恢复的 I/O 错误。
3272 | 16 | ''%1!'' 设备的硬件扇区大小为 %2!，但块大小参数却指定了不兼容的替代值 %3!。请用兼容的块大小值重新发出该语句。
3273 | 16 | BUFFERCOUNT 参数提供的值必须允许每台备份设备至少有一个缓冲区。
3274 | 16 | 对设备 %1! 上的备份集计算得到的校验值不正确。备份集无法还原。
3275 | 16 | I/O 请求 0x%08x 的 I/O 验证失败。请参见错误日志中的描述。
3276 | 16 | 只有在创建数据库时使用了 WITH SNAPSHOT 的情况下，才能使用 WITH SNAPSHOT。
3277 | 16 | WITH SNAPSHOT 必须仅用于一个虚拟设备。
3278 | 16 | 加密字符串 %1! 失败
3279 | 16 | 由于密码错误，访问遭拒绝
3280 | 16 | 不支持在原始设备上备份。''%1!'' 是原始设备。
3281 | 16 | 在 ''%1!'' 上释放并启动了回卷。
3301 | 21 | 事务日志中发现无效的日志记录（logop %1!）。
3313 | 21 | 恢复数据库 ''%1!'' 的日志中记录的操作时出错。出错位置在日志记录 ID %3!。
3314 | 21 | 撤消数据库 ''%1!'' 的日志中记录的操作时出错。出错位置在日志记录 ID %3!。
3315 | 10 | 在回滚过程中，进程 %1! 应在事务 %7! 下控制数据库 ''%5!'' 中行 %4! 的级别为 %3!、模式为 %2! 的锁。
3405 | 10 | 正在恢复数据库 ''%1!''。
3406 | 10 | 前滚了 %1! 个事务（在数据库 ''%2!''（%4!）中）。
3407 | 10 | 回滚了 %1! 个事务（在数据库 ''%2!''（%4!）中）。
3408 | 10 | 恢复完成。
3413 | 21 | 数据库 ID %1!。未能将数据库标记为置疑。对 sysdatabases.dbid 进行的 Getnext NC 扫描失败。
3414 | 10 | 数据库 ''%1!''（数据库 ID %3!）未能恢复。请与技术支持联系。
3415 | 16 | 数据库 ''%1!'' 为只读或含有只读文件，可写之后才能升级该数据库。
3417 | 21 | 无法恢复 master 数据库。正在退出。
3429 | 10 | 警告：无法确定事务 %1!（名为 ''%2!''，位于数据库 ''%4!'' 中，数据库 ID 为 %6!）的结果，因为未能打开协调数据库（数据库 ID %7!）。将假定该事务已提交。
3430 | 10 | 警告：无法确定事务 %1!（名为 ''%2!''，位于数据库 ''%4!'' 中，数据库 ID 为 %6!）的结果，因为协调数据库（数据库 ID %7!）不包含该结果。将假定该事务已提交。
3431 | 21 | 由于未能解析事务结果，所以未能恢复数据库 ''%1!''（数据库 ID %3!）。
3432 | 16 | 警告：缺少 syslanguages。
3433 | 16 | 已将名称截断为 ''%1!''。最大名称长度为 %3!。
3434 | 20 | 无法更改排序次序或区域设置。正在关闭服务器。请重新启动 SQL Server 以使用未更改的排序次序。
3435 | 20 | 由于存在用户对象或用户数据库，所以无法更改排序次序或区域设置。
3436 | 16 | 无法重建数据库 ''%3!'' 中表 ''%1!'' 的索引。
3437 | 21 | 恢复数据库 ''%1!'' 时出错。未能连接到 MSDTC 以检查事务 %3! 的完成状态。
3438 | 10 | 数据库 ''%1!''（数据库 ID %3!）恢复失败，因为事务的第一个 LSN 不等于检查点中的 LSN。请与技术支持联系。
3439 | 10 | 数据库 ''%1!''（数据库 ID %3!）。由于前面的错误，DBCC RECOVERDB 语句失败。
3440 | 21 | 数据库 ''%1!''（数据库 ID %3!）。DBCC RECOVERDB 语句只能在使用了 WITH NORECOVERY 选项的 RESTORE 语句之后运行。
3441 | 21 | 数据库 ''%1!''（数据库 ID %3!）。RESTORE 语句未能访问文件 ''%4!''。错误为 ''%5!''。
3442 | 21 | 数据库 ''%1!''（数据库 ID %3!）。撤消文件的大小不足。
3443 | 21 | 数据库 ''%1!''（数据库 ID %3!）虽标记为备用或只读，但已被更改。无法执行 RESTORE LOG 语句。
3445 | 21 | 文件 ''%1!'' 不是数据库 ''%2!'' 的有效撤消文件，数据库 ID %4!。
3450 | 10 | 数据库 ''%1!''（%3!）的恢复已完成 %4!%%（大约尚需 %5! 秒）（第 %6! 阶段，共 3 阶段）。
3604 | 10 | 已忽略重复的键。
3605 | 10 | 已忽略重复的行。
3606 | 10 | 发生算术溢出。
3607 | 10 | 发生被零除错误。
3608 | 16 | 无法为令牌分配 GUID。
3612 | 10 | %1!SQL Server 执行时间：%2!CPU 时间 = %3! 毫秒，耗费时间 = %4! 毫秒。
3613 | 10 | SQL Server 分析和编译时间：%1!CPU 时间 = %2! 毫秒，耗费时间 = %3! 毫秒。
3615 | 10 | 表 ''%1!''。扫描计数 %3!，逻辑读 %4! 次，物理读 %5! 次，预读 %6! 次。
3618 | 10 | 事务已终止。
3619 | 10 | 由于日志空间用尽，未能写入数据库 ID %1! 中的 CHECKPOINT 记录。
3620 | 10 | 由于日志空间用尽，在数据库 ''%1!'' 中禁用了检查点的自动执行。当数据库所有者成功执行了该数据库的检查点操作后，将继续启用检查点的自动执行。请释放一些空间，或扩展数据库大小，然后运行 CHECKPOINT 语句。
3621 | 10 | 语句已终止。
3622 | 10 | 发生域错误。
3625 | 20 | 尚未实现 ''%1!''。
3627 | 16 | 未能创建工作线程。
3628 | 24 | 用户进程中发生浮点异常错误。已取消当前事务。
3629 | 10 | SQL Server 已为 %1! 个并发查询而优化。%2! 个查询超过了此限制，因而性能可能会受到不良影响。
3630 | 10 | 自 %1!%2! 起并发违反数目 1 2 3 4 5 6 7 8 9 10-100 >100%3!%4!%5!%6!%7!%8!%9!%10!%11!%12!%13!%14!
3631 | 10 | 并发违反将写入 SQL Server 错误日志。
3632 | 10 | 并发违反将不写入 SQL Server 错误日志。
3701 | 11 | 无法 %1! %2! ''%3!''，因为它在系统目录中不存在。
3702 | 16 | 无法除去 %1! ''%2!''，因为它当前正在使用。
3703 | 16 | 无法分离 %1! ''%2!''，因为它当前正在使用。
3704 | 16 | 用户没有在 %1! ''%2!'' 上执行该操作的权限。
3705 | 16 | 无法将 DROP %1! 用于 ''%2!''，因为 ''%4!'' 是 %6!。请使用 DROP %7!。
3708 | 16 | 无法 %1! %2! ''%3!''，因为它是系统 %5!。
3716 | 16 | 无法除去 %1! ''%2!''，因为它绑定到了一个或多个 %4! 上。
3718 | 11 | 未能除去索引 ''%1!''，因为在系统表 sysindexes 中找不到该表或聚集索引的条目。
3723 | 16 | 不允许对索引 ''%1!'' 显式地使用 DROP INDEX。该索引正用于 %3! 约束的强制执行。
3724 | 16 | 无法 %1! %2! ''%3!''，因为它正用于复制。
3725 | 16 | 约束 ''%1!'' 正由表 ''%3!'' 的外键约束 ''%5!'' 引用。
3726 | 16 | 未能除去对象 ''%1!''，因为该对象正由一个 FOREIGN KEY 约束引用。
3727 | 10 | 未能除去约束。请参见前面的错误。
3728 | 16 | ''%1!'' 不是约束。
3729 | 16 | 无法 %1! ''%2!''，因为对象 ''%4!'' 正在引用它。
3733 | 16 | 约束 ''%1!'' 不属于表 ''%3!''。
3736 | 16 | 无法除去 %1! ''%2!''，因为它正用于分发。
3737 | 16 | 未能删除文件 ''%1!''。更多信息请参见 SQL Server 错误日志。
3738 | 16 | 正在删除数据库文件 ''%1!''。
3739 | 15 | 无法 %1! 索引 ''%2!''，因为该索引不是统计集合。
3902 | 13 | COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION。
3903 | 13 | ROLLBACK TRANSACTION 请求没有对应的 BEGIN TRANSACTION。
3904 | 21 | 无法撤消逻辑页 %1! 的拆分，该逻辑页位于对象 ''%2!''，数据库 ''%4!'' 中。拆分所得两页所包含的数据总和多于一页所能容纳的数据。
3906 | 16 | 未能在数据库 ''%1!'' 中运行 BEGIN TRANSACTION，因为该数据库是只读的。
3908 | 16 | 未能在数据库 ''%1!'' 中运行 BEGIN TRANSACTION，因为该数据库处于回避恢复模式。
3909 | 16 | 绑定令牌的会话无效。
3910 | 16 | 其它会话正在使用事务的上下文。
3912 | 16 | 当服务器未处于 XP 调用中时，无法用 XP 令牌进行绑定。
3914 | 16 | 数据类型 ''%1!'' 对于事务名称或保存点名称无效。允许使用的数据类型为 char、varchar、nchar 或 nvarchar。
3915 | 16 | 不能在 INSERT-EXEC 语句内部使用 ROLLBACK 语句。
3916 | 16 | 不能在 INSERT-EXEC 语句内部使用 COMMIT 语句，除非首先使用了 BEGIN TRANSACTION。
3917 | 16 | 会话绑定到了正在使用的事务上下文。已忽略批处理中的其它语句。
3918 | 16 | 语句必须在用户事务上下文中执行。
3919 | 16 | 无法登记事务，因为该事务已提交或回滚。
3920 | 10 | WITH MARK 选项仅应用于第一个 BEGIN TRAN MARK 语句。已忽略该选项。
3921 | 16 | 如果没有活动事务，就无法得到事务令牌。请在启动事务后重新发出该语句
3922 | 16 | 无法登记事务，因为该事务不存在。
3923 | 10 | 无法对数据库 ''%1!'' 使用事务标记，该数据库有未备份的大容量日志记录的操作。已忽略该标记。
3924 | 10 | 试图绑定到新事务时，会话登记到活动用户事务。该会话已脱离前面的用户事务。
3925 | 16 | 无效的事务标记名。已保留 ''LSN:'' 前缀。
3926 | 10 | 此会话中的活动事务已由另外一个会话提交或终止。
3927 | 10 | 此会话已有活动事务，但仍试图登记分布式事务处理协调器事务。
3928 | 16 | 已标记的事务 ''%1!'' 失败。尝试将标记放入日志时发生死锁。


错误 4000 -4999

错误 | 严重度 | 描述（消息文本）
4003 | 21 | ODS 错误。服务器正在终止此连接。
4004 | 16 | 不能用 DB-Library（如 ISQL）或 ODBC 3.7 或更早版本将 ntext 数据或仅使用 Unicode 排序规则的 Unicode 数据发送到客户端。
4015 | 16 | 登录 ''%1!'' 中所请求的语言不是此 SQL Server 上的正式名称。将改为使用服务器范围内默认的 %3!。
4016 | 16 | ''登录%1!'' 中所请求的语言不是此 SQL Server 上的正式名称。将改为使用用户默认的 %3!。
4017 | 16 | ''登录%1!'' 中所请求的语言和用户默认语言 %3! 均不是此 SQL Server 上的正式语言名称。将改为使用服务器范围内默认的 %3!。
4018 | 16 | 用户默认语言 %1! 不是此 SQL Server 上的正式语言名称。将改为使用服务器范围内默认的 %3!。
4019 | 16 | 登录 ''%1!'' 中所请求的语言不是此 SQL Server 上的正式语言名称。登录失败。
4020 | 16 | 默认日期顺序 ''%1!''（用于语言 %3!）无效。将改为使用 mdy 顺序。
4027 | 16 | 装入数据库 ''%2!'' 的 %1! 的磁带。
4028 | 16 | 已到达磁带结尾。请取出磁带 ''%1!''，然后装入 %2!（属于数据库 ''%3!''）的下一卷磁带。
4030 | 10 | 设备 ''%1!'' 上的媒体于 %2! 失效，无法重写。
4035 | 10 | 已处理 %1! 页，这些页属于数据库 ''%2!'' 的文件 ''%3!''（位于文件 %4! 上）。
4037 | 16 | 用户指定的卷 ID ''%1!'' 与卷 ID ''%2!''（属于设备 ''%3!''）不匹配。
4038 | 16 | 无法找到文件 ID %1!（在设备 ''%2!'' 上）。
4060 | 11 | 无法打开登录 ''%1!'' 中请求的数据库。登录失败。
4061 | 11 | 无法打开登录（%1!）中请求的数据库及用户默认数据库。将改为使用 master 数据库。
4062 | 11 | 无法打开用户默认数据库。将改为使用 master 数据库。
4063 | 11 | 无法打开登录（%1!）中请求的数据库。将改为使用用户默认数据库 ''%3!''。
4064 | 11 | 无法打开用户默认数据库。登录失败。
4208 | 16 | 当恢复模型为 SIMPLE 时，不允许使用 %1! 语句。请使用 BACKUP DATABASE 或用 ALTER DATABASE 更改恢复模型。
4212 | 16 | 无法备份 master 数据库的日志。应该使用 BACKUP DATABASE 来替代。
4214 | 10 | 没有当前的数据库备份。此日志备份不能用于前滚先前的数据库备份。
4215 | 10 | 该日志未截断，因为其开始处的记录是挂起的复制操作。请确保日志读取器代理正在运行，或使用 sp_repldone 将事务标记为分布式的。
4216 | 16 | 当数据库不可用时，无法备份最小日志记录操作。
4217 | 10 | 由于数据库为只读，BACKUP LOG 无法修改该数据库。将继续备份，尽管后续的备份将重复此次备份的工作。
4301 | 16 | 数据库正在使用。系统管理员必须拥有对该数据库的排它使用权才能还原日志。
4304 | 16 | 将忽略 RESTORE LOG 过程中出现的 USER ATTENTION 信号，直到当前还原过程完毕。
4305 | 16 | 此备份集中的日志开始于 LSN %1!，该 LSN 太晚，无法应用到数据库。包含 LSN %3! 的较早的日志备份可以还原。
4306 | 16 | 先前的还原操作未指定 WITH NORECOVERY 或 WITH STANDBY。请在除最后步骤之外的所有其它步骤中指定 WITH NORECOVERY 或 WITH STANDBY 后，重新启动该还原序列。
4316 | 16 | 如果 SQL Server 处于单用户模式下，就只能在 master 数据库中 RESTORE LOG。
4318 | 16 | 已将文件 ''%1!'' 前滚到 LSN %2!。此日志终止于 LSN %4!，该 LSN 太早，无法应用 WITH RECOVERY 选项。请以 WITH NORECOVERY 选项重新发出 RESTORE LOG 语句。
4320 | 16 | 通过数据库或文件还原操作，只还原了文件 ''%1!'' 的一部分。必须成功地还原整个文件后，才能应用日志。
4322 | 10 | 此日志文件包含指定的即时点之前的记录。数据库将保留于装载状态，以便应用另一个日志文件。
4323 | 16 | 数据库已标记为置疑。无法还原事务日志。请使用 RESTORE DATABASE 来还原数据库。
4324 | 10 | 已删除早于 %1! 的备份历史记录。
4325 | 16 | 未能删除备份集 ID ''%1!'' 的条目。
4326 | 16 | 此备份集中的日志终止于 LSN %1!，该 LSN 太早，无法应用到数据库。包含 LSN %3! 的较新的日志备份可以还原。
4327 | 16 | 此备份集中的日志包含最小日志记录更改。禁止进行时点恢复。RESTORE 将前滚到日志的结尾，而不恢复数据库。
4328 | 16 | 缺少文件 ''%2!''。在日志序列号 %2! 处停止了前滚。该文件在 LSN %4! 处创建，在 LSN %6! 处除去。请在除去文件时将事务日志及时还原到超出点之外的位置，或将数据还原到与数据库的其余部分一致的状态。
4329 | 10 | 此日志文件包含指定的标记之前的记录。数据库将保留于装载状态，以便应用另一个日志文件。
4330 | 16 | 无法应用此备份集中的日志，因为该日志位于与数据库不一致的恢复路径上。
4331 | 16 | 无法恢复数据库，因为已将文件还原到了不一致的即时点上。
4332 | 16 | 已暂停了 RESTORE LOG。若要在数据库的当前状态下使用该数据库，请运行 RESTORE DATABASE %1! WITH RECOVERY。
4333 | 16 | 数据库无法恢复，因为日志未还原。
4334 | 16 | 已命名的标记不能标识有效的 LSN。
4403 | 16 | 视图或函数 ''%1!'' 不可更新，因为它包含聚合。
4404 | 16 | 视图或函数 ''%1!'' 不可更新，因为其定义中包含 DISTINCT 子句。
4405 | 16 | 视图或函数 ''%1!'' 不可更新，因为修改会影响多个基表。
4406 | 16 | 对视图或函数 ''%1!'' 的更新或插入失败，因其包含有派生域或常量域。
4408 | 19 | 查询和其中的视图或函数超过了 %1! 个表的限制。
4413 | 16 | 由于绑定错误，未能使用视图或函数 ''%1!''。
4414 | 16 | 未能为视图或函数解析分配辅助表。超过了查询中表的最大数目（%1!）。
4415 | 16 | 视图 ''%1!'' 不可更新，原因是该视图或者该视图所跨越的某一视图创建时使用了 WITH CHECK OPTION，并且结果查询中多次引用了目标表。
4416 | 16 | UNION ALL 视图 ''%1!'' 不可更新，因为其定义中包含不允许的构造。
4417 | 16 | 派生表 ''%1!'' 不可更新，因为其定义中包含 UNION 运算符。
4418 | 16 | 派生表 ''%1!'' 不可更新，因为它包含聚合。
4419 | 16 | 派生表 ''%1!'' 不可更新，因为其定义中包含 DISTINCT 子句。
4420 | 16 | 派生表 ''%1!'' 不可更新，因为修改会影响多个基表。
4421 | 16 | 派生表 ''%1!'' 不可更新，因为派生表中的某一列是派生的或是常量。
4422 | 16 | 视图 ''%1!'' 有 INSTEAD OF UPDATE 触发器，因而无法作为 UPDATE FROM 语句的目标。
4423 | 16 | 视图 ''%1!'' 有 INSTEAD OF DELETE 触发器，因而无法作为 DELETE FROM 语句的目标。
4424 | 16 | 在包含外联接运算符的查询中，不能指定被联接的表。视图或函数 ''%1!'' 包含被联接的表。
4425 | 16 | 在包含被联接的表的查询中，不能指定外联接运算符。视图或函数 ''%1!'' 包含外联接运算符。
4427 | 16 | 视图或函数 ''%1!'' 不可更新，因为其定义中包含 TOP 子句。
4428 | 16 | 派生表 ''%1!'' 不可更新，因为其定义中包含 TOP 子句。
4429 | 16 | 视图或函数 ''%1!'' 包含自引用。视图或函数不能直接或间接地引用其自身。
4430 | 10 | 警告：将忽略为视图 ''%1!'' 提供的索引提示。
4431 | 16 | 分区视图 ''%1!'' 不可更新，因为表 ''%3!'' 中有 timestamp 列。
4432 | 16 | 分区视图 ''%1!'' 不可更新，因为表 ''%3!'' 中有 DEFAULT 约束。
4433 | 16 | 无法插入 (INSERT) 分区视图 ''%1!'' 中，因为表 ''%3!'' 有 IDENTITY 约束。
4434 | 16 | 分区视图 ''%1!'' 不可更新，因为表 ''%3!'' 中有 INSTEAD OF 触发器。
4435 | 16 | 分区视图 ''%1!'' 不可更新，因为尚未指定分区列 ''%3!'' 的值。
4436 | 16 | UNION ALL 视图 ''%1!'' 不可更新，因为没有找到分区列。
4437 | 16 | 分区视图 ''%1!'' 不能作为大容量操作的目标来更新。
4438 | 16 | 分区视图 ''%1!'' 不可更新，因其不从其成员表中提供所有列。
4439 | 16 | 由于源查询中有对分区表 ''%3!'' 的引用，分区视图 ''%1!'' 不可更新。
4440 | 16 | UNION ALL 视图 ''%1!'' 不可更新，因为在表 ''%3!'' 上没有找到主键。
4441 | 16 | 分区视图 ''%1!'' 不可更新，因为表 ''%3!'' 的计算列上有索引。
4442 | 16 | UNION ALL 视图 ''%1!'' 不可更新，因为基表 ''%3!'' 已多次使用。
4443 | 16 | UNION ALL 视图 ''%1!'' 不可更新，因为基表 ''%5!'' 的列 ''%3!'' 已多次使用。
4444 | 16 | UNION ALL 视图 ''%1!'' 不可更新，因为联合结果中没有表 ''%3!'' 的主键。
4445 | 16 | UNION ALL 视图 ''%1!'' 不可更新，因为表 ''%3!'' 的主键未与前面的表的主键联合。
4446 | 16 | UNION ALL 视图 ''%1!'' 不可更新，因为视图 ''%5!'' 的列 ''%3!'' 的定义已由另外一个视图列所使用。
4447 | 16 | 视图 %1! 不可更新，因其定义中包含集合运算符。
4448 | 16 | 无法插入 (INSERT) 分区视图 %1! 中，因为没有为所有列提供值。
4449 | 16 | 在含有集合运算符的视图中不允许使用默认值。
4450 | 16 | 无法更新分区视图 ''%1!''，因为表 ''%5!'' 中视图列 ''%3!'' 的定义有 IDENTITY 约束。
4451 | 16 | 引用多个服务器上的表的视图在 SQL Server 的此 SKU 上不可更新。
4501 | 16 | 视图或函数 ''%1!'' 中定义的列比所给的列名多。
4502 | 16 | 为视图或函数 ''%1!'' 指定的列名比其定义中的列多。
4505 | 16 | CREATE VIEW 失败，因为列 ''%1!''（属于视图 ''%3!''）超过了列的最大数目 %5!。
4506 | 10 | 各视图或函数中的列名必须唯一。多次指定了列名 ''%1!''（属于视图或函数 ''%3!''）。
4508 | 16 | 不允许在临时表上建立视图或函数。以 ''#'' 开头的表名表示临时表。
4509 | 16 | 未能执行 CREATE VIEW，因为指定了 WITH %1!，而视图包含集合运算符。
4510 | 16 | 未能执行 CREATE VIEW，因为指定了 WITH %1!，而视图却是不可更新的。
4511 | 16 | 创建视图或函数失败，因为没有为第 %1! 列指定列名。
4512 | 16 | 无法将 %1! 绑定到架构，因为名称 ''%4!'' 对于架构绑定无效。名称必须由两部分构成，并且对象不能引用自身。
4513 | 16 | 无法将 %1! ''%2!'' 绑定到架构。''%4!'' 尚未绑定到架构。
4514 | 16 | CREATE FUNCTION 失败，因为没有为第 %1! 列指定列名。
4515 | 16 | CREATE FUNCTION 失败，因为函数 ''%3!'' 中的列 ''%1!'' 超过了列的最大数目 %5!。
4516 | 16 | 无法架构绑定函数 %1!，因为该函数不含有 EXECUTE 语句。
4602 | 14 | 只有 sysadmin 角色的成员才能授予或废除 CREATE DATABASE 权限。
4604 | 16 | 不存在这样的用户或组：''%1!''。
4606 | 16 | 所授予或废除的特权 %1! 与对象不兼容。
4610 | 16 | 您只能授予或废除当前数据库中对象上的权限。
4611 | 16 | 若要废除可授予的特权，请在 REVOKE 语句中指定 CASCADE 选项。
4613 | 16 | 授权者无 GRANT 权限。
4615 | 16 | 列名 ''%1!'' 无效。
4617 | 16 | 无法对特殊角色授予、拒绝或废除权限。
4618 | 16 | 您没有在 AS 子句中使用 %1! 的权限。
4619 | 16 | 只能在 master 数据库中授予 CREATE DATABASE 权限。
4701 | 11 | 未能截断表 ''%1!''，因为此表在数据库 ''%3!'' 中不存在。
4706 | 17 | 未能截断表 ''%1!''，因为日志中没有足够的空间来记录所有索引和数据页的解除分配。
4707 | 16 | 未能截断对象 ''%1!''，因为该对象或其某一索引驻留在 READONLY 文件组中。
4708 | 16 | 未能截断对象 ''%1!''，因为该对象不是表。
4709 | 16 | 不允许截断系统表 ''%1!''。
4711 | 16 | 无法截断表 ''%1!''，因为该表已为复制而发布。
4712 | 16 | 无法截断表 ''%1!''，因为该表正由 FOREIGN KEY 约束引用。
4803 | 21 | 从 bcp 客户端收到的行长度 %1! 无效。行大小的最大值为 %2!。
4804 | 21 | 从宿主读取当前行时过早遇到消息结尾。宿主程序可能已终止。
4805 | 17 | 您所使用的前端工具不支持从宿主进行大容量插入的功能。请使用适当的工具来执行此命令。
4807 | 21 | 从 bcp 客户端收到的行长度 %1! 无效。行大小的最小值为 %2!。
4808 | 16 | 大容量复制操作无法触发 BULK INSERT 语句。
4810 | 16 | 在数据流中缺少用于大容量复制 text 或 image 数据的 TEXT 令牌。
4811 | 16 | 在数据流中缺少用于大容量复制 text 或 image 数据的列偏移量。
4812 | 16 | 在数据流中缺少用于大容量复制 text 或 image 数据的行偏移量。
4813 | 16 | 在数据流中缺少用于大容量复制 text、ntext 或 image 数据的文本长度。
4815 | 21 | 从 bcp 客户端收到的列长度无效。
4817 | 16 | 未能进行大容量插入。排序的列 ''%1!'' 无效。将假定数据流未排序。
4818 | 16 | 未能进行大容量插入。多次指定了排序的列 ''%1!''。将假定数据流未排序。
4819 | 16 | 未能进行大容量插入。大容量数据流被错误地指定为已排序。
4820 | 16 | 未能进行大容量插入。格式文件 ''%1!'' 的版本未知。
4821 | 16 | 未能进行大容量插入。从格式文件 ''%1!'' 中读取列数目时出错。
4822 | 16 | 未能进行大容量插入。格式文件 ''%1!'' 中的列数目无效。
4823 | 16 | 未能进行大容量插入。格式文件 ''%1!'' 中的列号无效。
4824 | 16 | 未能进行大容量插入。第 %1! 列的数据类型（在格式文件 ''%2!'' 中指定）无效。
4825 | 16 | 未能进行大容量插入。第 %1! 列的前缀（在格式文件 ''%2!'' 中指定）无效。
4826 | 16 | 未能进行大容量插入。第 %1! 列的列长度（在格式文件 ''%2!'' 中指定）无效。
4827 | 16 | 未能进行大容量插入。第 %1! 列的列终止符（在格式文件 ''%2!'' 中指定）无效。
4828 | 16 | 未能进行大容量插入。第 %1! 个源列的目的表列号（在格式文件 ''%2!'' 中指定）无效。
4829 | 16 | 未能进行大容量插入。读取第 %1! 个源列的目的表列名（在格式文件 ''%2!'' 中指定）时出错。
4830 | 10 | 大容量插入：DataFileType 被错误地指定为 char。将假定 DataFileType 为 widechar，因为数据文件有 Unicode 签名。
4831 | 10 | 大容量插入：DataFileType 被错误地指定为 widechar。将假定 DataFileType 为 char，因为数据文件没有 Unicode 签名。
4832 | 16 | 大容量插入：在数据文件中遇到意外的文件结尾 (EOF)。
4833 | 16 | 大容量插入：提供程序动态链接库和服务器可执行文件之间的版本不匹配。
4834 | 16 | 您没有使用 BULK INSERT 语句的权限。
4835 | 16 | 对于下级客户端，不支持向具有计算列的表中进行大容量复制。
4837 | 16 | 错误：无法向启用了即时更新订阅功能的表 ''%1!'' 中进行大容量复制
4838 | 16 | 大容量数据源不支持 SQLNUMERIC 或 SQLDECIMAL 数据类型。
4839 | 16 | 无法执行大容量插入。源列 %1! 的排序规则名称（在格式文件 ''%2!'' 中指定）无效。
4840 | 16 | 大容量数据源提供程序字符串的 %1! 属性值 %2! 无效。
4841 | 16 | 数据源名称不是简单对象名。
4842 | 16 | 服务器的提供程序字符串中缺少必需的 FormatFile 属性。
4843 | 16 | 大容量数据源提供程序字符串在字符位置 %2! 附近有语法错误（''%1!''）。
4844 | 16 | 大容量数据源提供程序字符串中有不支持的属性名称（%1!）。
4845 | 16 | 大容量数据源提供程序字符串在字符位置 %1! 附近有语法错误。应为 ''%2!''，但却发现 ''%3!''。
4846 | 16 | 大容量数据提供程序分配内存失败。
4847 | 16 | 对于早于 SQL Server 2000 的版本，不支持向具有 bigint 列的表中进行大容量复制。
4848 | 16 | 对于早于 SQL Server 2000 的版本，不支持向具有 sql_variant 列的表中进行大容量复制。
4849 | 16 | 未能导入表 ''%1!''。错误 %2!。
4850 | 10 | 数据导入：其他用户已锁定了表 ''%1!''。
4851 | 10 | 数据导入：表 ''%1!'' 中已有数据。将跳到下一个表。
4852 | 10 | 数据导入：表 ''%1!'' 不存在，或该表不是用户表。
4853 | 10 | %1!
4854 | 21 | %1!
4860 | 16 | 未能进行大容量插入。文件 ''%1!'' 不存在。
4861 | 16 | 未能进行大容量插入，因为未能打开文件 ''%1!''。操作系统错误代码 %2!。
4862 | 16 | 未能进行大容量插入，因为未能读取文件 ''%1!''。操作系统错误代码 %2!。
4863 | 16 | 第 %1! 行、第 %2! 列（%3!）发生大容量插入数据转换错误（截断）。
4864 | 16 | 第 %1! 行、第 %2! 列（%3!）发生大容量插入数据转换错误（类型不匹配）。
4865 | 16 | 未能进行大容量插入，因为已超过最大错误数目（%1!）。
4866 | 16 | 大容量插入失败。数据文件中第 %1! 行、第 %2! 列的列太长。请确保正确地指定了字段终止符和行终止符。
4867 | 16 | 第 %1! 行、第 %2! 列（%3!）发生大容量插入数据转换错误（溢出）。
4868 | 16 | 大容量插入失败。未安装代码页 ''%1!''。请安装该代码页后再运行该命令。
4869 | 16 | 大容量插入失败。在数据文件的第 %1! 行、第 %2! 列遇到意外的 NULL 值。目的列（%3!）定义为 NOT NULL。
4880 | 16 | 未能进行大容量插入。当使用 FIRSTROW 和 LASTROW 参数时，FIRSTROW 的值不得大于 LASTROW 的值。
4881 | 10 | 注意：通过视图进行大容量插入可能导致遇到数据文件中的 NULL 列时忽略基础表中的默认值。
4882 | 16 | 未能进行大容量插入。源列 %1!（在格式文件 ''%2!'' 中）需要前缀长度、字段长度或终止符。
4901 | 16 | ALTER TABLE 只允许添加可包含空值或指定了 DEFAULT 定义的列。因为列 ''%1!'' 不能包含空值且未指定 DEFAULT 定义，所以无法将该列添加到表 ''%3!'' 中。
4902 | 11 | 无法更改表 ''%1!''，因为数据库 ''%3!'' 中不存在此表。
4909 | 16 | 无法更改 ''%1!''，因为它不是表。
4910 | 16 | 只有所有者或 sysadmin 角色的成员才能更改表 ''%1!''。
4916 | 16 | 未能启用或禁用约束。请参见前面的错误。
4917 | 16 | 约束 ''%1!'' 不存在。
4920 | 16 | ALTER TABLE 失败，因为触发器 ''%1!'' 在表 ''%3!'' 上不存在。
4921 | 16 | ALTER TABLE 失败，因为触发器 ''%1!'' 不属于表 ''%3!''。
4922 | 16 | %1! %2! 失败，因为有一个或多个对象访问此列。
4923 | 16 | ALTER TABLE DROP COLUMN 失败，因为 ''%1!'' 是表 ''%3!'' 中仅有的数据列。每个表必须至少有一个数据列。
4924 | 16 | %1! 失败，因为列 ''%2!'' 在表 ''%4!'' 中不存在。
4925 | 16 | ALTER TABLE ALTER COLUMN ADD ROWGUIDCOL 失败，因为表 ''%1!'' 中已经存在具有 ROWGUIDCOL 属性的列。
4926 | 16 | ALTER TABLE ALTER COLUMN DROP ROWGUIDCOL 失败，因为表 ''%1!'' 中不存在具有 ROWGUIDCOL 属性的列。
4927 | 16 | 无法将列 ''%1!'' 更改为数据类型 %3!。
4928 | 16 | 无法更改列 ''%1!''，因为该列是 ''%3!''。
4929 | 16 | 无法更改 %1! ''%2!''，因为它正在为复制而发布。
4930 | 10 | 警告：现有的项目将忽略添加到已复制的表 %1! ''%2!'' 中的列。
4931 | 16 | 无法向 %1! ''%2!'' 中添加列，因为它正在为合并复制而发布。
4932 | 16 | ALTER TABLE DROP COLUMN 失败，因为当前正在复制 ''%1!''。


错误 5000 -5999

错误 | 严重度 | 描述（消息文本）
5001 | 16 | 用户必须在 master 数据库中。
5002 | 16 | 数据库 ''%1!'' 不存在。请检查 sysdatabases。
5004 | 16 | 若要使用 ALTER DATABASE，数据库就必须处于可写入的状态，从而可以执行检查点。
5005 | 10 | 以 %1! MB 为单位在磁盘 ''%2!'' 上扩展数据库。
5006 | 16 | 未能得到对 %1! ''%2!'' 的排它使用权以执行所请求的操作。
5008 | 16 | 不支持此 ALTER DATABASE 语句。
5009 | 16 | ALTER DATABASE 失败。没有找到语句中列出的某些磁盘名称。请检查这些名称是否存在，拼写是否正确，然后再重新运行该语句。
5010 | 16 | 无法用原始设备名称生成日志文件名。必须指定日志文件名和路径。
5011 | 14 | 用户没有更改数据库 ''%1!'' 的权限。
5012 | 16 | 无法更改主文件组的名称。
5013 | 16 | 不能向 master 和 model 数据库添加文件。ALTER DATABASE 已终止。
5014 | 16 | %1! ''%2!'' 在数据库 ''%4!'' 中不存在。
5015 | 16 | ALTER DATABASE 失败。指定的总大小必须为 1 MB 或更大。
5016 | 16 | 不能更改系统数据库 master、model 和 tempdb 的名称。
5017 | 16 | ALTER DATABASE 失败。数据库 ''%1!'' 不是用 FOR LOAD 选项创建的。
5018 | 0 | 在 sysaltfiles 中已更改了文件 ''%1!''。请在重新启动 SQL Server 后删除旧文件。
5019 | 10 | 在 sysaltfiles 中无法找到文件 ''%1!'' 对应的条目。
5020 | 16 | 不能从数据库中删除主数据文件或主日志文件。
5021 | 10 | %1! 名称 ''%2!'' 已设置。
5022 | 16 | 此数据库的日志文件 ''%1!'' 已处于活动状态。
5023 | 16 | 必须将数据库置于回避恢复模式下才能重建日志。
5024 | 16 | 在 sysfiles1 中没有找到主日志文件所对应的条目。未能重建日志。
5025 | 16 | 文件 ''%1!'' 已存在。应重命名或删除该文件，以便创建新日志文件。
5026 | 16 | 未能用文件 ''%1!'' 创建新日志文件。请参见前面的错误。
5027 | 16 | 不能重建系统数据库 master、model 和 tempdb 的日志。
5028 | 16 | 系统未能激活足够的数据库来重建日志。
5029 | 10 | 警告：数据库 ''%1!'' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项，并且可能需要删除多余的日志文件。
5030 | 16 | 未能排它地锁定数据库以执行该操作。
5031 | 16 | 无法删除文件 ''%1!''，因为该文件是 DEFAULT 文件组中仅有的文件。
5032 | 10 | 只有备份了日志后，才能将文件收缩到页 %1! 以下，因为该文件包含了大容量日志记录页。
5035 | 16 | 此数据库中已存在文件组 ''%1!''。
5036 | 16 | MODIFY FILE 失败。请指定逻辑名称。
5037 | 16 | MODIFY FILE 失败。请勿指定物理名称。
5038 | 16 | 对文件 "%1!" 进行的 MODIFY FILE 失败。必须至少对每个文件指定一个属性。
5039 | 16 | MODIFY FILE 失败。指定的大小小于当前大小。
5040 | 16 | MODIFY FILE 失败。大小大于 MAXSIZE。
5041 | 16 | MODIFY FILE 失败。文件 ''%1!'' 不存在。
5042 | 16 | 无法删除 %1! ''%2!''，因为它不是空白的。
5043 | 16 | %1! ''%2!'' 在 %4! 中没有找到。
5044 | 10 | %1! ''%2!'' 已删除。
5045 | 16 | 已设置了 %1! 的 ''%2!'' 属性。
5046 | 10 | %1! 属性 ''%2!'' 已设置。
5047 | 16 | 无法更改 PRIMARY 文件组的 READONLY 属性。
5048 | 16 | 无法添加、删除或修改文件组 ''%1!'' 中的文件，因为该文件组为只读。
5049 | 16 | 无法用此语法扩展文件 ''%1!''，因为该文件不是用 DISK INIT 创建的。请使用 ALTER DATABASE MODIFY FILE。
5050 | 16 | 无法更改空白文件组 ''%1!'' 的属性。文件组必须至少包含一个文件。
5051 | 16 | 不能将文件组命名为 ''DEFAULT''。
5053 | 16 | 已超过了每个数据库最多 %1! 个文件组的限制。
5054 | 16 | 未能清除工作表 IAM 链以允许收缩或删除文件操作。请在 tempdb 闲置时再试。
5055 | 16 | 无法添加、删除或修改文件 ''%1!''，因为该文件为只读。
5056 | 16 | 无法添加、删除或修改文件组 ''%1!'' 中的文件，因为该文件组脱机。
5057 | 16 | 无法添加、删除或修改文件 ''%1!''，因为该文件脱机。
5058 | 16 | 无法在数据库 ''%3!'' 中设置选项 ''%1!''。
5059 | 16 | 数据库 ''%1!'' 正处于转换状态。请稍后再试 ALTER DATABASE 语句。
5060 | 10 | 正在回滚不合法事务。估计回滚已完成：%1!%%。
5061 | 16 | 由于未能在数据库 ''%1!'' 上放置锁，ALTER DATABASE 失败。请稍后再试。
5062 | 16 | 无法在设置其它选项的同时设置选项 ''%1!''。
5063 | 16 | 数据库 ''%1!'' 处于备用状态。备用数据库为只读。
5064 | 16 | 目前不能更改数据库 ''%1!'' 的状态或选项。该数据库处于单用户模式下，当前某一用户已与其连接。
5065 | 16 | 无法打开数据库 ''%1!''。
5066 | 16 | 不能同时设置单用户和只供 dbo 使用这两个数据库选项。
5068 | 10 | 重新启动当前数据库失败。当前数据库已切换为 MASTER。
5069 | 16 | ALTER DATABASE 语句失败。
5070 | 16 | 如果其他用户正使用数据库 ''%1!''，则数据库状态不能更改
5072 | 16 | ALTER DATABASE 失败。无法将数据库 ''%1!'' 的默认排序规则设置为 ''%3!''。
5073 | 16 | 无法更改数据库 ''%1!'' 的排序规则，因为该数据库处于 READONLY、OFFLINE 状态或标记为 SUSPECT。
5074 | 16 | %1! ''%2!'' 依赖于 %4! ''%5!''。
5075 | 16 | %1! ''%2!'' 依赖于 %4!。
5076 | 10 | 警告：将更改数据库 ''%1!'' 的默认排序规则，而该排序规则用在复制中。建议所有的复制数据库具有相同的默认排序规则。
5101 | 15 | 必须为 DISK %1! 语句提供参数。用法：%2!。
5102 | 15 | 没有这样的语句：%1!。
5103 | 16 | 文件 ''%1!'' 的 MAXSIZE 不能小于 SIZE。
5104 | 16 | 文件 ''%1!'' 已使用。
5105 | 16 | 设备激活错误。物理文件名 ''%1!'' 可能有误。
5106 | 15 | 参数 ''%1!'' 要求数据类型为 ''%2!'' 的值。
5107 | 15 | 参数 ''%1!'' 的值的数据类型错误（要求数据类型 ''%2!''）。
5108 | 10 | 日志文件 ''%1!'' 与主文件不匹配。可能该文件来自另一个数据库，也可能先前曾重建过该日志。
5109 | 16 | 没有这样的参数：''%1!''。
5110 | 16 | 文件 ''%1!'' 位于数据库文件所不支持的网络设备上。
5116 | 14 | 您没有运行 DISK 语句的权限。
5117 | 16 | 未能运行 DISK 语句。必须在 master 数据库中才能运行此语句。
5122 | 10 | 每个磁盘文件大小必须大于或等于 1 MB。
5123 | 16 | 当试图打开或创建物理文件 ''%2!'' 时，CREATE FILE 遇到操作系统错误 %1!。
5126 | 16 | 在 sysdevices 中不存在逻辑设备 ''%1!''。
5146 | 16 | %1! 值 %2! 越界。该值必须介于 %3! 到 %4! 之间。
5148 | 16 | 未能将文件大小设置为所需的值。可能已达到操作系统的文件大小极限。
5149 | 16 | 试图扩大物理文件时，MODIFY FILE 遇到操作系统错误 %1!。
5150 | 16 | 单个日志文件的大小不得大于 2 TB。
5151 | 16 | %1! 语句已过时，已不再支持该语句。
5157 | 16 | 在逆向操作过程中，writelog 系统函数遇到 I/O 错误。
5158 | 10 | 警告：设备 ''%1!'' 中的媒体可能已改变。
5159 | 16 | 在 %5! 过程中，设备 ''%3!'' 上发生操作系统错误 %1!。
5160 | 16 | 无法使 ''%1!'' 脱机，因为该数据库正在使用。
5162 | 16 | 无法在 sysdatabases 中找到 ''%1!''。
5163 | 16 | 无法打开 ''%1!'' 以使之脱机。
5164 | 16 | 用法：DBCC DBCONTROL(dbname,ONLINE|OFFLINE)
5165 | 16 | 不能显式地打开或关闭 master 数据库。
5167 | 16 | 数据库 ''%1!'' 已脱机。
5168 | 16 | 文件 ''%1!'' 位于网络驱动器上，这是不允许的。
5169 | 16 | 文件 ''%1!'' 的 FILEGROWTH 不能大于 MAXSIZE。
5170 | 16 | 无法创建文件 ''%1!''，因为该文件已存在。
5171 | 16 | %1! 不是主数据库文件。
5172 | 16 | 文件 ''%1!'' 的文件头不是有效的数据库文件头。%2! 属性不正确。
5173 | 16 | 不能使文件与不同的数据库相关。
5174 | 10 | 每个文件的大小必须大于或等于 512 KB。
5175 | 10 | 已扩大了文件 ''%1!'' 以防止恢复失败。请与系统管理员联系以寻求进一步的协助。
5176 | 10 | 已扩大了文件 ''%1!'' 以防止恢复失败；其大小已超出最大值。请与系统管理员联系以寻求进一步的协助。
5177 | 16 | 检查文件 ''%1!'' 的扇区大小时遇到意外错误。详细信息请检查 SQL Server 错误日志。
5178 | 16 | 无法使用文件 ''%1!''，因为原先格式化该文件时所用扇区大小为 %3!，而目前所在设备的扇区大小为 %4!。
5179 | 16 | 无法使用文件 ''%1!''，因为其所在设备的扇区大小为 %3!。SQL Server 支持的最大扇区大小为 4096 字节。
5180 | 22 | 由于文件 ID %1!（位于数据库 ''%2!'' 中）无效，所以未能打开 FCB。
5181 | 16 | 未能重新启动数据库 ''%1!''。将还原回旧状态。
5182 | 16 | 已创建名为 ''%1!'' 的新日志文件。
5183 | 16 | 无法创建文件 ''%1!''。请用 WITH MOVE 来指定可用的物理文件名。
5184 | 16 | 无法对群集服务器使用文件 ''%1!''。只能使用服务器的群集资源在该文件上具有相关性的带格式文件。
5701 | 10 | 已将数据库上下文改为 ''%1!''。
5702 | 10 | SQL Server 正在终止此进程。
5703 | 10 | 已将语言设置改为 %1!。
5803 | 10 | sysconfigures 中有未知的配置号（%1!）。
5804 | 16 | 无法更改字符集、排序次序或排序规则，因为至少有一个数据库不可写入。
5805 | 16 | 指定的锁太少。至少应为 %1!。
5807 | 16 | 建议恢复间歇不要超过 %1! 分钟。请用 RECONFIGURE WITH OVERRIDE 语句来强制实施这一配置。
5808 | 16 | 建议不要对系统目录进行特殊更新。请用 RECONFIGURE WITH OVERRIDE 语句来强制实施这一配置。
5809 | 16 | 建议平均时间片不要超过 %1! 毫秒。请用 RECONFIGURE WITH OVERRIDE 语句来强制实施这一配置。
5810 | 16 | 填充因子的有效值为 0 到 100。
5812 | 14 | 您没有运行 RECONFIGURE 语句的权限。
5823 | 16 | 无法将 SQL Server 重新配置为使用排序次序 ID %1!，因为在 syscharsets 中不存在该排序次序所对应的行。
5828 | 16 | 用户连接数限制为 %1!。
5829 | 16 | 指定的用户选项值无效。
5830 | 10 | 已重新配置了 SQL Server 的默认排序规则。请重新启动 SQL Server 以重建表中字符数据类型的列上的索引。
5831 | 16 | 最小服务器内存值（%1!）必须小于或等于最大值（%2!）。
5904 | 17 | 后台检查点进程已挂起，直到有可用的锁。


错误 6000 -6999

错误 | 严重度 | 描述（消息文本）
6001 | 10 | SHUTDOWN 正在等待 %1! 个进程完成。
6002 | 10 | SHUTDOWN 正在进行。请注销。
6004 | 10 | 用户没有执行此操作的权限。
6005 | 10 | SHUTDOWN 正在进行。
6006 | 10 | 服务器已按要求关闭。
6007 | 10 | SHUTDOWN 语句不能在事务内部执行，也不能由存储过程执行。
6101 | 16 | 进程 ID %1! 不是有效的进程 ID。请选择 1 到 %2! 之间的数字。
6102 | 14 | 用户没有使用 KILL 语句的权限。
6103 | 17 | 未能执行被取消进程的清除工作。收到的消息数为 %1!。
6104 | 16 | 不能用 KILL 来取消您自己的进程。
6106 | 16 | 进程 ID %1! 不是活动进程 ID。
6107 | 14 | 只能取消用户进程。
6108 | 16 | Microsoft SQL Server 2000 不支持 KILL SPID WITH COMMIT/ABORT。请使用 Microsoft 分布式事务处理协调器解决分布式事务。
6109 | 10 | SPID %1!：正在进行事务回滚。估计回滚已完成：%2!%%。估计剩余时间：%3! 秒。
6110 | 16 | UOW 为 %1! 的分布式事务不存在。
6111 | 16 | 另外一个用户已为 UOW %1! 所关联的分布式事务决定了不同的结果。
6112 | 16 | UOW 为 %1! 的分布式事务处于准备好的状态。只有 Microsoft 分布式事务处理协调器可以解决此事务。KILL 命令失败。
6113 | 16 | UOW %1! 所关联的分布式事务处于 PREPARE 状态。改用 KILL UOW WITH COMMIT/ABORT 语法取消此事务。
6114 | 16 | 另外一个用户当前正在使用 UOW 为 %1! 的分布式事务。KILL 命令失败。
6115 | 16 | 无法在用户事务内部使用 KILL 命令。
6116 | 16 | KILL 命令失败。
6117 | 16 | 有与 UOW %1! 的分布式事务相关联的连接。先用 KILL SPID 语法取消该连接。
6118 | 16 | UOW %1! 所关联的分布式事务不处于 PREPARE 状态。改用 KILL UOW 语法取消此事务。
6119 | 10 | UOW %1! 的分布式事务正在回滚：估计回滚已完成：%2!%%，估计剩余时间：%3! 秒。
6120 | 16 | 无法获取状态报告。当前没有对进程 ID %1! 执行回滚操作。
6121 | 16 | 无法获取状态报告。当前没有对 UOW %1! 执行回滚操作。
6401 | 16 | 无法回滚 %1!。没有找到任何该名称的事务或保存点。
6600 | 16 | XML 错误：%1!
6601 | 10 | XML 分析器返回了错误代码 %1!，来自行号 %2!，源 ''%3!''。
6602 | 16 | 错误描述为 ''%1!''。
6603 | 16 | XML 分析错误：%1!
6604 | 25 | 在纤程模式下不支持 XML 存储过程。
6605 | 16 | %1!：在 XML 文本上获得 IPersistStream 接口失败。
6606 | 17 | %1!：保存 XML 文本流失败。可能服务器的资源太少。
6607 | 16 | %1!：为第 %3! 个参数提供的值无效。
6608 | 16 | 实例化类 ''%1!'' 失败。请确保 Msxml2.dll 在 SQL Server 安装中存在。
6609 | 16 | 列 ''%1!'' 含有无效的数据类型。有效的数据类型为 char、varchar、nchar、nvarchar、text 和 ntext。
6610 | 17 | 装载 Msxml2.dll 失败。
6612 | 16 | 参数 ''%1!'' 所指出的列的数据类型无效。有效的数据类型为 int、bigint、smallint 和 tinyint。
6613 | 16 | 指定的值 ''%1!'' 已存在。
6614 | 16 | 对列 ''%1!'' 和 ''%2!'' 指定了相同的值。元素不能是其自身的父代。
6615 | 16 | 列 ''%1!'' 的数据类型无效。有效的数据类型为 int、bigint、smallint 和 tinyint。
6616 | 16 | 当缺少并必须插入要添加元素的父代时，需要参数 ''%1!''。
6617 | 16 | 指定边缘表的格式无效。缺少列 ''%1!'' 或该列的数据类型无效。
6618 | 16 | 指定边缘表中的列 ''%1!'' 的值无效，或该值是空值。
6619 | 16 | 无法创建类型为 %1!、名称为 ''%2!'' 的 XML 节点。
6620 | 16 | 无法为列 ''%1!'' 创建 XML 特性或元素。
6621 | 16 | 发生 XML 编码或解码错误，对象名 ''%1!''。
6622 | 16 | 列 ''%1!'' 的数据类型无效。数据类型不能是 text、ntext、image 或 binary。
6623 | 16 | 列 ''%1!'' 的数据类型无效。允许的数据类型为 char、varchar、nchar 和 nvarchar。
6624 | 16 | 未能创建 XML 文档，因为服务器内存不足。请使用 sp_xml_removedocument 释放 XML 文档。
6800 | 16 | FOR XML AUTO 至少需要一个表才能生成 XML 标记。请用 FOR XML RAW 或添加带有表名的 FROM 子句。
6801 | 16 | FOR XML EXPLICIT 至少需要三列，包括标记列、父列和至少一个数据列。
6802 | 16 | FOR XML EXPLICIT 查询含有无效列名 ''%1!''。请用 TAGNAME!TAGID!ATTRIBUTENAME[!..] 格式，其中 TAGID 是正整数。
6803 | 16 | FOR XML EXPLICIT 要求第一列包含代表 XML 标记 ID 的正整数。
6804 | 16 | FOR XML EXPLICIT 要求第二列包含 NULL 或代表 XML 父标记 ID 的负整数。
6805 | 16 | 发生 FOR XML EXPLICIT 堆栈溢出。不允许有循环的父标记关系。
6806 | 16 | 在 FOR XML EXPLICIT 查询中使用了未声明的标记 ID %1!。
6807 | 16 | 在 FOR XML EXPLICIT 查询中使用了未声明的父标记 ID %1!。
6808 | 16 | 未能添加 XML 标记 ID %1!。可能服务器的内存资源太少。
6809 | 16 | 无法将未命名的列或表名用作 XML 标识符。请在 SELECT 语句中用 AS 来命名未命名的列。
6810 | 16 | 列名 ''%1!'' 重复。无法在同样的 XML 标记上多次生成同样的特性。
6811 | 16 | FOR XML 与 COMPUTE 表达式不兼容。请删除该 COMPUTE 表达式。
6812 | 16 | 原来声明为 ''%2!'' 的 XML 标记 ID %1! 现在要重新声明为 ''%4!''。
6813 | 16 | FOR XML EXPLICIT 无法在列名 ''%1!'' 中组合多个 ID、IDREF、IDREFS、NMTOKEN 和/或 NMTOKENS。
6814 | 16 | 在 FOR XML EXPLICIT 子句中，ID、IDREF、IDREFS、NMTOKEN 和 NMTOKENS 要求在 ''%1!'' 中有特性名。
6815 | 16 | 在 FOR XML EXPLICIT 子句中，ID、IDREF、IDREFS、NMTOKEN 和 NMTOKENS 特性在 ''%1!'' 中不能是隐藏的。
6816 | 16 | 在 FOR XML EXPLICIT 子句中，ID、IDREF、IDREFS、NMTOKEN 和 NMTOKENS 特性在 ''%1!'' 中不能生成为 CDATA、XML 或 XMLTEXT。
6817 | 16 | FOR XML EXPLICIT 不能在列名 ''%1!'' 中组合多个 ELEMENT、XML、XMLTEXT 和 CDATA。
6818 | 16 | 在 FOR XML EXPLICIT 子句中，CDATA 特性在 ''%1!'' 中必须是未命名的。
6819 | 16 | 在 %1! 语句中不允许使用 FOR XML 子句。
6820 | 16 | FOR XML EXPLICIT 要求列 %1! 命名为 ''%2!''，而不是 ''%3!''。
6821 | 16 | 当前不支持 GROUP BY 和聚合函数与 FOR XML AUTO 共同使用。
6824 | 16 | 在 FOR XML EXPLICIT 子句中，列名中的模式 ''%1!'' 无效。
6825 | 16 | ELEMENTS 模式要求 FOR XML AUTO。
6826 | 16 | FOR XML EXPLICIT 查询中的每个 IDREFS 或 NMTOKENS 列都必须分别出现在一条 SELECT 子句中，并且这些实例都必须直接排列在它们所属的元素之后。
6827 | 16 | FOR XML EXPLICIT 查询只允许每个标记有一个 XMLTEXT 列。列 %1! 声明另一个 XMLTEXT 列，而这是不允许的。
6828 | 16 | XMLTEXT 列 ''%1!'' 必须是字符串数据类型。
6829 | 16 | FOR XML EXPLICIT 和 RAW 模式当前不支持对类似于列 ''%1!'' 中 URL 的二进制数据寻址。请删除该列并使用 BINARY BASE64 模式，或用 ''dbobject/TABLE[@PK1="V1"]/@COLUMN'' 语法直接创建 URL。
6830 | 16 | FOR XML AUTO 未能找到拥有列 ''%1!'' 的表，无法为它创建 URL 地址。请删除该列并使用 BINARY BASE64 模式，或用 ''dbobject/TABLE[@PK1="V1"]/@COLUMN'' 语法直接创建 URL。
6831 | 16 | FOR XML AUTO 需要主键才能为 ''%1!'' 创建引用。请选择主键，或者在不存在主键的情况下，使用 BINARY BASE64 来获得编码形式的二进制数据作为示例。
6832 | 16 | 如果主键也是二进制的，FOR XML AUTO 就无法为二进制数据生成 URL 地址。
6833 | 16 | 打开的标记中没有父标记 ID %1!。FOR XML EXPLICIT 要求首先打开父标记。请检查结果集的顺序。
6834 | 16 | XMLTEXT 字段 ''%1!'' 包含无效的 XML 文档。请检查根标记及其特性。
6835 | 16 | FOR XML EXPLICIT 字段 ''%1!'' 只能指定一次 HIDE 命令。
6836 | 16 | FOR XML EXPLICIT 要求以特性为中心的 IDREFS 或 NMTOKENS 字段 %1! 在以元素为中心的 IDREFS/NMTOKEN 字段之前。
6837 | 16 | 以 ''%1!'' 开头的 XMLTEXT 文档特性太长。最大长度为 %3!。
6838 | 16 | 以特性为中心的 IDREFS 或 NMTOKENS 字段，在具有 TEXT/NTEXT 或 IMAGE 类型的字段 %1! 的以元素为中心的标记上不受支持。请在 IDREFS/NMTOKENS 字段上指定 ELEMENT 或删除 ELEMENT 指令。
6839 | 16 | 在具有 IDREFS 或 NMTOKENS 字段的标记 %1! 上，FOR XML EXPLICIT 不支持 XMLTEXT 字段。
6840 | 16 | XMLDATA 不支持命名空间元素或特性（例如 %1!）。请运行不带 XMLDATA 的 SELECT FOR XML 语句，或删除命名空间前缀声明。


错误 7000 -7999

错误 | 严重度 | 描述（消息文本）
7000 | 16 | OPENXML 文档句柄参数的数据类型必须为 int。
7001 | 16 | OPENXML 标志参数的数据类型必须为 int。
7002 | 16 | OPENXML XPath 必须是字符串数据类型，如 nvarchar。
7003 | 16 | 只有一个 OPENXML 列可以是 %1! 类型。
7004 | 16 | OPENXML 不支持像在 ''%1!'' 中的、从远程表检索架构的用法。
7005 | 16 | 如果在 sp_xml_preparedocument 中为其它命名空间使用了 ''mp''，OPENXML 就要求声明元属性命名空间。
7006 | 16 | OPENXML 在标识元属性命名空间前缀时遇到问题。请考虑从相应的 sp_xml_preparedocument 语句中删除命名空间参数。
7007 | 16 | OPENXML 遇到未知的元属性 ''%1!''。
7008 | 16 | OPENXML EDGETABLE 与 XMLTEXT OVERFLOW 标志不兼容。
7009 | 16 | OPENXML 只允许在 sp_xml_preparedocument 中声明一个元属性命名空间前缀。
7101 | 16 | 不能对 ''text in row'' 选项设置为 ON 的表使用文本指针。
7102 | 20 | SQL Server 内部错误。文本管理器无法继续执行当前语句。
7103 | 16 | 您不能为表 %1! 设置 ''text in row'' 选项。
7104 | 16 | 偏移量或大小类型无效。必须是 int 或 smallint 数据类型。
7105 | 22 | text、ntext 或 image 节点的页 %1!，槽 %2! 不存在。
7106 | 16 | 不能用只读文本指针来更新二进制大对象 (Blob)
7107 | 16 | 在一个事务中只能有 1024 个行内文本指针
7116 | 16 | 偏移量 %1! 不在可用的 text、ntext 或 image 数据范围内。
7122 | 16 | text、ntext 或 image 指针类型无效。必须是 binary(16)。
7123 | 16 | text、ntext 或 image 指针值 %1! 无效。
7124 | 16 | READTEXT 语句中指定的偏移量和长度大于实际的数据长度 %1!。
7125 | 16 | text、ntext 或 image 指针值与指定的列名冲突。
7126 | 16 | text、ntext 或 image 指针值所引用的数据页的 text、ntext 或 image 状态无效。
7127 | 16 | text、ntext 或 image 指针值所引用的数据页的时间戳无效。
7128 | 16 | text、ntext 或 image 指针值所引用的数据页已不再处于已分配状态。
7130 | 16 | 目前 %1! WITH NO LOG 无效。请使用 sp_dboption 来为数据库 ''%2!'' 打开 select into/bulkcopy 选项。
7133 | 16 | 向 %1! 函数传递了 NULL textptr（text、ntext 或 image 指针）。
7135 | 16 | 删除长度 %1! 不在可用的 text、ntext 或 image 数据范围内。
7137 | 16 | 不允许 %1!，因为该列正在由并发快照处理，并且正在复制到非 SQL Server 订阅服务器，或正作为允许数据转换服务 (DTS) 的发布的一部分而发布。
7138 | 16 | 不允许使用 WRITETEXT 语句，因为正在用数据转换服务 (DTS) 复制该列。
7139 | 16 | 要复制的 text、ntext 或 image 数据的长度（%1!）超过了所配置的最大长度 %2!。
7141 | 16 | 必须在用户事务内部创建孤立文本。
7142 | 16 | 必须在提交事务之前除去孤立文本。
7143 | 16 | 解析得到的定位器无效。
7201 | 17 | 未能在远程服务器上执行过程 ''%1!''，因为未将 SQL Server 配置为允许远程访问。请要求系统管理员将 SQL Server 重新配置为允许远程访问。
7202 | 11 | 在 sysservers 中未能找到服务器 ''%1!''。请执行 sp_addlinkedserver 以将服务器添加到 sysservers。
7212 | 16 | 未能在远程服务器 ''%3!'' 上执行过程 ''%1!''。
7213 | 20 | 未能为远程服务器 ''%1!'' 设置参数。
7214 | 16 | 超过了远程过程的超时值（%1! 秒）。远程过程 ''%2!'' 已取消。
7221 | 16 | 未能中继过程 ''%1!'' 的结果（来自服务器 ''%3!''）。
7300 | 16 | OLE DB 错误跟踪［%1!］。
7301 | 16 | 未能从 OLE DB 提供程序 ''%1!'' 获得所需的接口。
7302 | 16 | 未能创建 OLE DB 提供程序 ''%1!'' 的实例。
7303 | 16 | 未能初始化 OLE DB 提供程序 ''%1!'' 的数据源对象。%2!
7304 | 16 | 未能在 OLE DB 提供程序 ''%1!'' 上创建新会话。
7305 | 16 | 未能使用 OLE DB 提供程序 ''%1!'' 创建语句对象。
7306 | 16 | 未能打开表 ''%1!''（来自 OLE DB 提供程序 ''%2!''）。%2!
7307 | 16 | 未能从 OLE DB 提供程序 ''%1!'' 获得会话的数据源。提供程序必须支持此操作。
7310 | 16 | 未能获得 OLE DB 提供程序 ''%1!'' 的架构选项。该提供程序支持该接口，但使用该接口时返回了失败代码。
7311 | 16 | 未能获得 OLE DB 提供程序 ''%1!'' 的架构行集。该提供程序支持该接口，但使用该接口时返回了失败代码。
7312 | 16 | 对 OLE DB 提供程序 ''%1!'' 的架构和/或目录的使用无效。提供了由四部分构成的名称，但提供程序并未表现必要的接口来使用目录和/或架构。
7313 | 16 | 为提供程序指定的架构或目录无效 ''%1!''。
7314 | 16 | OLE DB 提供程序 ''%1!'' 不包含表 ''%2!''。该表可能不存在，或当前用户没有使用该表的权限。
7315 | 16 | OLE DB 提供程序 ''%1!'' 包含多个与名称 ''%2!'' 匹配的表。
7316 | 16 | 未能将合法表名（架构或目录）用于 OLE DB 提供程序 ''%1!''，因为该提供程序未实现所需的功能。
7317 | 16 | OLE DB 提供程序 ''%1!'' 返回了无效的架构定义。
7318 | 16 | OLE DB 提供程序 ''%1!'' 返回了无效的列定义。
7319 | 16 | OLE DB 提供程序 ''%1!'' 返回了 ''%2!'' 索引 ''%3!''，其中有不正确的书签序号 %4!。
7320 | 16 | 未能对 OLE DB 提供程序 ''%1!'' 执行查询。%2!
7321 | 16 | 准备对 OLE DB 提供程序 ''%1!'' 执行查询时出错。%2!
7322 | 16 | 向 OLE DB 提供程序 ''%1!'' 提供参数信息时失败。%2!
7323 | 16 | 向 OLE DB 提供程序 ''%1!'' 提交查询文本时出错。%2!
7330 | 16 | 未能从 OLE DB 提供程序 ''%1!'' 中提取行。%2!
7331 | 16 | 未能释放来自 OLE DB 提供程序 ''%1!'' 的行。%2!
7332 | 16 | 未能重新扫描来自 OLE DB 提供程序 ''%1!'' 的结果集。%2!
7333 | 16 | 未能用书签从 OLE DB 提供程序 ''%1!'' 中提取行。%2!
7340 | 16 | 未能创建 OLE DB 提供程序 ''%1!'' 的列访问程序。%2!
7341 | 16 | 未能得到列 ''%1!.%2!'' 的当前行的值（从 OLE DB 提供程序 ''%3!'' 中）。%4!
7342 | 16 | 返回了意外的 ''%1!.%2!'' 列值 NULL（从 OLE DB 提供程序 ''%3!'' 中）。此列不能是 NULL。
7343 | 16 | OLE DB 提供程序 ''%1!'' 未能 %2! 表 ''%3!''。%4!
7344 | 16 | OLE DB 提供程序 ''%1!'' 未能 %2! 表 ''%3!''（由于列 ''%4!''）。%5!
7345 | 16 | OLE DB 提供程序 ''%1!'' 未能从表 ''%2!'' 中删除。%3!
7346 | 16 | 未能从 OLE DB 提供程序 ''%1!'' 中得到行的数据。%2!
7347 | 16 | OLE DB 提供程序 ''%1!'' 返回了固定长度列 ''%2!.%3!'' 的意外数据长度。预期的数据长度为 %4!。而返回的数据长度为 %5!。
7348 | 16 | OLE DB 提供程序 ''%1!'' 未能为表 ''%2!'' 设置范围。%3!
7349 | 16 | OLE DB 提供程序 ''%1!'' 未能为表 ''%2!'' 设置范围（由于列 ''%3!''）。%4!
7350 | 16 | 未能从 OLE DB 提供程序 ''%1!'' 中得到列信息。
7351 | 16 | OLE DB 提供程序 ''%1!'' 未能为对象 ''%2!'' 中的一列或多列映射序号。
7352 | 16 | OLE DB 提供程序 ''%1!'' 提供的元数据不一致。对象 ''%2!'' 缺少预期的列 ''%3!''。
7353 | 16 | OLE DB 提供程序 ''%1!'' 提供的元数据不一致。在执行过程中提供了多余的一列，但在编译时并未发现该列。
7354 | 16 | OLE DB 提供程序 ''%1!'' 为列 ''%2!'' 提供的元数据无效。%3!
7355 | 16 | OLE DB 提供程序 ''%1!'' 为列提供的元数据不一致。执行时更改了名称。
7356 | 16 | OLE DB 提供程序 ''%1!'' 为列提供的元数据不一致。执行时更改了元数据信息。
7357 | 16 | 未能处理对象 ''%1!''。OLE DB 提供程序 ''%2!'' 指出该对象中没有任何列。
7358 | 16 | 未能执行查询。OLE DB 提供程序 ''%1!'' 未提供用于访问 text、ntext 或 image 列 ''%2!.%3!'' 的适当接口。
7359 | 16 | OLE DB 提供程序 %1! 报告了表 %3! 的架构版本，该版本在编译和执行之间已更改。
7360 | 16 | 未能从 OLE DB 提供程序 ''%1!'' 中得到表 ''%2!'' 内列 ''%3!'' 的存储对象的长度。
7361 | 16 | 未能从 OLE DB 提供程序 ''%1!'' 中读取表 ''%2!'' 内列 ''%3!'' 的存储对象。
7362 | 16 | OLE DB 提供程序 %1! 报告在运行时表 %2! 的列 %3! 有不同的元数据。
7365 | 16 | 未能从 OLE DB 提供程序 ''%1!'' 中获取列行集的可选元数据列。
7366 | 16 | 未能获得 OLE DB 提供程序 ''%1!'' 的列行集。该提供程序支持该接口，但使用该接口时返回了失败代码。
7367 | 16 | OLE DB 提供程序 ''%1!'' 支持列级别的排序规则，但在运行时提供元数据列 ''%2!'' 失败。
7368 | 16 | OLE DB 提供程序 ''%1!'' 支持列级别的排序规则，但提供列 ''%2!'' 的排序规则数据时失败。
7369 | 16 | OLE DB 提供程序 ''%1!'' 提供的排序规则无效。%2s。
7370 | 16 | 未能设置 OLE DB 提供程序 ''%1!'' 的查询的一个或多个属性。%2!
7371 | 16 | 未能设置 OLE DB 提供程序 ''%1!'' 的表的一个或多个属性。
7372 | 16 | 无法从 OLE DB 提供程序 ''%1!'' 中得到属性。
7373 | 16 | 未能设置 OLE DB 提供程序 ''%1!'' 的初始化属性。
7374 | 16 | 未能设置 OLE DB 提供程序 ''%1!'' 的会话属性。
7375 | 16 | 未能打开索引 ''%1!''（位于表 ''%2!'' 上，该表来自 OLE DB 提供程序 ''%3!''）。%4!
7376 | 16 | 未能强制此查询的远程联接提示。
7377 | 16 | 无法指定远程数据源的索引或锁定提示。
7378 | 16 | 更新/删除操作要求远程表上有唯一键或聚集索引。
7379 | 16 | OLE DB 提供程序 ''%1!'' 返回了意外的小数/数字列 ''%3!.%4!'' 的 ''%2!''。预期的数据长度为 ''%5!''，而返回的数据长度为 ''%6!''。
7390 | 16 | 请求的操作未能执行，因为 OLE DB 提供程序 ''%1!'' 不支持所需的事务接口。
7391 | 16 | 该操作未能执行，因为 OLE DB 提供程序 ''%1!'' 无法启动分布式事务。
7392 | 16 | 未能为 OLE DB 提供程序 ''%1!'' 启动事务。
7393 | 16 | OLE DB 提供程序 ''%1!'' 报告：终止当前事务时出错。
7394 | 16 | OLE DB 提供程序 ''%1!'' 报告：提交当前事务时出错。
7395 | 16 | 无法为 OLE DB 提供程序 ''%1!'' 启动嵌套事务。之所以需要嵌套事务是因为 XACT_ABORT 选项已设置为 OFF。
7399 | 16 | OLE DB 提供程序 ''%1!'' 报错。%2!
7401 | 16 | 无法创建随 SQL Server 安装的 OLE DB 提供程序枚举对象。请验证安装是否正确。
7403 | 16 | 未能找到 OLE DB 提供程序 ''%1!'' 的注册表项。
7404 | 16 | 服务器未能装载 DCOM。
7405 | 16 | 异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项。这将确保一致的查询语义。请启用这些选项，然后重新发出查询。
7410 | 16 | 不允许用 SETUSER 激活的 Windows NT 用户进行远程访问。
7411 | 16 | 服务器 ''%1!'' 没有为 %3! 的目的而配置。
7413 | 16 | 未能执行 Windows NT 验证登录，因为委托不可用。
7414 | 16 | 参数数目无效。行集 ''%1!'' 需要的参数数目为 %2!。
7415 | 16 | 已拒绝对 OLE DB 提供程序 ''%1!'' 的特殊访问。必须通过链接服务器来访问此提供程序。
7416 | 16 | 对远程服务器的访问遭拒绝，因为不存在登录映射。
7417 | 16 | 如果访问远程表的查询中有 WHERE 子句，则不支持 GROUP BY ALL 操作。
7418 | 16 | 由于提供程序所用的存储接口，text、image 或 ntext 列因为太大而无法发送到远程数据源。
7419 | 16 | 惰性架构验证错误。链接服务器架构版本已更改。请重新运行查询。
7601 | 16 | 无法在 %1! ''%2!'' 上使用 CONTAINS 或 FREETEXT 谓词，因为没有为它建立全文索引。
7602 | 16 | 全文服务（Microsoft 搜索）不可用。系统管理员必须启动此服务。
7603 | 15 | 搜索条件中有语法错误，或搜索条件 ''%1!'' 为空或 NULL。
7604 | 17 | 由于超时，全文操作失败。
7605 | 17 | 全文目录 ''%1!'' 已丢失。请用 sp_fulltext_catalog 重建并重新填充此全文目录。
7606 | 17 | 未能找到数据库 ID %1! 中表 ID %2! 的全文索引。请用 sp_fulltext_table 停用并重新激活此索引。
7607 | 17 | 对全文目录 ''%1!''（属于数据库 ID %2! 中的表 ID %3!）的搜索（搜索条件为 ''%4!''）失败，结果（%5!）未知。
7608 | 17 | 未知的全文操作失败（%1!）发生于函数 %2! 对全文目录 ''%3!'' 的操作中。
7609 | 17 | 未安装全文检索或未能装载某一全文组件。
7610 | 16 | 对 ''%1!'' 的访问遭拒绝或路径无效。未正确安装全文功能。
7611 | 10 | 警告：忽略了在全文目录 ''%1!'' 中启动填充的请求，因为此全文目录当前有一填充正在进行。
7612 | 16 | %1! 不是全文系统资源使用的有效值。
7613 | 16 | 无法除去索引 ''%1!''，因为该索引用于强制表 ''%3!'' 的全文键。
7614 | 16 | 无法更改或除去列 ''%1!''，因为该列是为全文检索而启用的。
7615 | 16 | CONTAINS 或 FREETEXT 谓词只能在一个表上操作。请用表名来限定 * 的使用。
7616 | 16 | 没有为当前数据库启用全文检索。请用 sp_fulltext_database 来为数据库启用全文检索。
7617 | 16 | 查询未引用建立了全文索引的表。
7618 | 16 | %1! 不是全文连接超时的有效值。
7620 | 16 | 向数据类型 %1! 的转换（对全文检索键值 0x%2!）失败。
7621 | 16 | 在 HAVING 子句中对全文谓词的使用无效。
7622 | 17 | 全文目录 ''%1!'' 缺少用于完成此操作的足够磁盘空间。
7623 | 17 | 全文查询失败，因为尚未为查询而准备好全文目录 ''%1!''。
7624 | 17 | 全文目录 ''%1!'' 处于不可使用的状态。请除去并重新创建此全文目录。
7625 | 16 | 全文表在其具有全文索引的列中，有不止一个 LCID。
7626 | 15 | top_n_by_rank 参数（''%1!''）必须大于零。
7627 | 16 | 无法在目录 ''%1!'' 中为群集服务器创建全文目录。只能使用服务器群集组中的磁盘上的目录。
7628 | 17 | 无法访问遭拒绝或路径无效，未能将 Schema.txt 复制到 ''%1!''。未正确安装全文功能。
7629 | 17 | 无法打开或查询注册表键值 ''%1!''。
7630 | 15 | 在搜索条件 ''%3!'' 中的 ''%1!'' 附近发生语法错误。
7631 | 15 | 在 ''%1!'' 附近发生语法错误。在搜索条件 ''%5!'' 中应为 ''%3!''。
7632 | 15 | 权重参数的值必须介于 0.0 到 1.0 之间。
7633 | 15 | 不允许 <内容搜索条件> OR NOT <内容布尔条件> 语法。
7634 | 17 | 分析搜索条件 ''%1!'' 时发生堆栈溢出。
7635 | 16 | 无法在当前用户帐户下管理 Microsoft 搜索服务
7636 | 10 | 警告：忽略了在表 ''%1!'' 上启动全文索引填充的请求，因为此表当前有一填充正在进行。
7637 | 16 | 值 %1! 对全文数据超时无效。
7638 | 10 | 警告：停止更改跟踪的请求已删除所有在表 ''%1!'' 上跟踪到的更改。
7639 | 16 | 无法在 %1! ''%2!'' 上使用全文谓词，因其不在本地服务器上。
7640 | 10 | 警告：停止跟踪表 ''%1!'' 上的更改的请求将不会停止当前在该表上进行的填充。
7641 | 16 | 全文目录 ''%1!'' 不存在。
7642 | 16 | 此数据库中已存在名为 ''%1!'' 的全文目录。
7905 | 16 | 指定的对象既不是表，也不是约束
7908 | 10 | 表 ''%1!'' 是用 NO_LOG 选项创建的。
7910 | 10 | 修复：页 %1! 已分配给对象 ID %2!，索引 ID %3!。
7911 | 10 | 修复：页 %1! 已从对象 ID %2!，索引 ID %3! 处释放。
7912 | 10 | 修复：扩展盘区 %1! 已分配给对象 ID %2!，索引 ID %3!。
7913 | 10 | 修复：扩展盘区 %1! 已从对象 ID %2!，索引 ID %3! 处释放。
7914 | 10 | 修复：%1! 页（位于 %2!）已重建。
7915 | 10 | 修复：对象 ID %1!，索引 ID %2! 的 IAM 链已在页 %3! 之前截断，并将重建。
7916 | 10 | 修复：已删除对象 ID %1!，索引 ID %2!（位于页 %3!，槽 %4!）的记录。将重建索引。
7917 | 10 | 修复：已将对象 ID %1!，索引 ID %2!（位于页 %3!，槽 %4!）的正向记录转换为一个数据行。
7918 | 10 | 修复：已将页 %1! 的下一页指针和页 %2! 的上一页指针设置为相互匹配的值（在对象 ID %3!，索引 ID %4! 中）。
7919 | 16 | 未处理修复语句。数据库需要处于单用户模式下。
7920 | 10 | 已在 sysindexes 中处理了 %1! 个条目（数据库 ID %2!）。
7923 | 10 | 表 %1! 对象 ID %3!。
7924 | 16 | 索引 ID %1!。FirstIAM %2!。根 %3!。Dpages %4!。
7925 | 16 | 索引 ID %1!。已在 %3! 个专用扩展盘区中使用 %2! 页。
7927 | 16 | 扩展盘区总数为 %1!。
7932 | 16 | ''%1!'' 的索引已经是正确的。将不重建这些索引。
7933 | 16 | 一个或多个索引有错误。将重建这些索引。
7934 | 16 | 表 ''%1!'' 没有索引。
7935 | 16 | REINDEX 收到异常错误。语句已终止。
7937 | 16 | 表 ''%1!'' 中的数据可能不一致。REINDEX 已终止。请运行 DBCC CHECKTABLE，并将错误报告给系统管理员。
7939 | 16 | 由于数据库 ''%1!'' 不存在，所以无法分离该数据库。
7940 | 16 | 无法分离系统数据库 master、model、msdb 和 tempdb。
7941 | 10 | 没有对此连接启用跟踪选项。请使用 ''DBCC TRACEON()''。
7942 | 10 | DBCC %1! 正在扫描 ''%2!'' 表...
7943 | 10 | 表：''%1!''（%3!）；索引 ID：%4!，数据库 ID：%5!
7944 | 10 | 已执行 %1! 级别的扫描。
7945 | 10 | - 扫描页数.....................................：%1!
7946 | 10 | - 扫描扩展盘区数...............................：%1!
7947 | 10 | - 扩展盘区开关数...............................：%1!
7948 | 10 | - 每个扩展盘区上的平均页数.....................： %1!
7949 | 10 | - 扫描密度［最佳值:实际值］....................：%1!%2!［%3!:%4!］
7950 | 10 | - 逻辑扫描碎片.................................：%1!%2!
7951 | 10 | - 物理扫描碎片.................................：%1!%2!
7952 | 10 | - 扩展盘区扫描碎片.............................：%1!%2!
7953 | 10 | - 每页上的平均可用字节数.......................：%1!
7954 | 10 | - 平均页密度（完整）...........................：%1!%2!
7955 | 10 | 指定的 SPID %1! 无效。
7956 | 10 | 执行 DBCC %1! 的权限遭拒绝。
7957 | 10 | 无法显示转换中的指定 SPID 的缓冲区。
7958 | 10 | 指定的 SPID 不处理输入/输出数据流。
7959 | 10 | 此版本不支持 DBCC 语句。
7961 | 16 | 对象 ID %1!，索引 ID %2!，页 ID %3!，行 ID %4!。列 ''%5!'' 是 var 列，值为 NULL，并且数据长度不为零。
7962 | 16 | 升级要求 SQL Server 以单用户模式启动。请用 -m 标志重新启动 SQL Server。
7963 | 16 | 升级遇到严重错误。更多信息请参见 SQL Server 错误日志。
7965 | 16 | 表错误：由于无效的分配 (IAM) 页，未能检查对象 ID %1!，索引 ID %2!。
7966 | 10 | 警告：使用了 %1! 的 NO_INDEX 选项。将跳过对非系统索引的检查。
7968 | 10 | 数据库 ''%1!'' 的事务信息。
7969 | 10 | 没有活动的处于打开状态的事务。
7970 | 10 | %1!最早的活动事务：
7971 | 10 | SPID（服务器进程 ID）：%1!
7972 | 10 | UID（用户 ID）：%1!
7974 | 10 | 名称 ：%1!
7975 | 10 | LSN ：(%1!:%2!:%3!)
7977 | 10 | 启动时间 ：%1!
7979 | 10 | %1!重复事务信息：
7980 | 10 | 最早的分布式 LSN ：（%1!:%2!:%3!）
7982 | 10 | 最早的非分布式 LSN：（%1!:%2!:%3!）
7983 | 14 | 用户 ''%1!'' 没有对数据库 ''%5!'' 运行 DBCC %3! 的权限。
7984 | 16 | 对象名 ''%1!'' 无效。
7985 | 16 | 对象名 ''%1!'' 包含的前缀数目超过了最大值。最大值为 %2!。
7986 | 16 | 警告：应仔细考虑是否使表驻留。如果内存驻留表大于（或增长到大于）可用数据高速缓存的大小，那么服务器可能需要重新启动，并使表不驻留。
7991 | 16 | 系统表不匹配：表 ''%1!''，对象 ID %3! 在 sysindexes 中的索引 ID 为 1，但在 sysobjects 中的状态却未设置聚集位。该表将作为堆集来检查。
7992 | 16 | 无法收缩 ''read only'' 数据库 ''%1!''。
7993 | 10 | 无法收缩文件 ''%1!''（属于数据库 ''%2!''）至 %4! 页，因为该文件只包含 %5! 页。
7994 | 16 | 对象 ID %1!，索引 ID %2!：sysindexes 中的 FirstIAM 字段为 %3!。仅用于统计的 FirstIAM 和虚索引条目应为 (0:0)。
7995 | 16 | 数据库 ''%1!'' 在 sysobjects、sysindexes、syscolumns 或 systypes 中存在一致性错误，妨碍了进一步的 %2! 处理。
7996 | 16 | 扩展存储过程只能在 master 数据库中创建。
7997 | 16 | ''%1!'' 不包含标识列。
7998 | 16 | 检查标识信息：当前标识值 ''%1!''，当前列值 ''%3!''。
7999 | 16 | 未能找到任何名为 ''%1!'' 的索引（属于表 ''%3!''）。


错误 8000 -8999

错误 | 严重度 | 描述（消息文本）
8101 | 16 | 仅当使用了列的列表，并且 IDENTITY_INSERT 为 ON 时，才能在表 ''%1!'' 中为标识列指定显式值。
8102 | 16 | 无法更新标识列 ''%1!''。
8103 | 16 | 表 ''%1!'' 不存在，或无法为 SET 操作打开该表。
8104 | 16 | 当前用户不是表 ''%1!'' 的数据库或对象所有者。无法执行 SET 操作。
8105 | 16 | ''%1!'' 不是用户表。无法执行 SET 操作。
8106 | 16 | 表 ''%1!'' 没有标识属性。无法执行 SET 操作。
8107 | 16 | 表 ''%1!.%3!.%5!'' 的 IDENTITY_INSERT 已经为 ON。无法对表 ''%7!'' 执行 SET 操作。
8108 | 16 | 无法使用 SELECT INTO 语句向表 ''%1!'' 中添加标识列，该表中已有继承了标识属性的列 ''%3!''。
8109 | 16 | 试图使用 SELECT INTO 语句向表 ''%1!'' 中添加多个标识列。
8110 | 16 | 无法向表 ''%1!'' 中添加多个 PRIMARY KEY 约束。
8111 | 16 | 无法在表 ''%1!'' 中可为空的列上定义 PRIMARY KEY 约束。
8112 | 16 | 无法为表 ''%1!'' 上的约束添加多个聚集索引。
8114 | 16 | 将数据类型 %1! 转换为 %2! 时出错。
8115 | 16 | 将 %1! 转换为数据类型 %2! 时发生算术溢出错误。
8116 | 16 | 函数 %3! 的参数 %2! 的数据类型 %1! 无效。
8117 | 16 | 操作数数据类型 %1! 无效（运算符 %2!）。
8118 | 16 | 列 ''%1!.%3!'' 在选择列表中无效，因为该列未包含在聚合函数中，并且没有 GROUP BY 子句。
8119 | 16 | 列 ''%1!.%3!'' 在 HAVING 子句中无效，因为该列未包含在聚合函数中，并且没有 GROUP BY 子句。
8120 | 16 | 列 ''%1!.%3!'' 在选择列表中无效，因为该列既不包含在聚合函数中，也不包含在 GROUP BY 子句中。
8121 | 16 | 列 ''%1!.%3!'' 在 HAVING 子句中无效，因为该列既不包含在聚合函数中，也不包含在 GROUP BY 子句中。
8122 | 16 | 只有 UNION 语句中的第一个查询才能使用带赋值的 SELECT。
8123 | 16 | 相关表达式无效，因为该表达式不在 GROUP BY 子句中。
8124 | 16 | 在包含外部引用的被聚合表达式中指定了多个列。如果被聚合的表达式包含外部引用，那么该外部引用就必须是该表达式中所引用的唯一的一列。
8125 | 16 | 在 FROM 子句包含被聚合列所在的表的查询中，包含外部引用的被聚合表达式必须包含在选择列表或 HAVING 子句子查询中。
8126 | 16 | 列名 ''%1!.%3!'' 在 ORDER BY 子句中无效，因为该列未包含在聚合函数中，并且没有 GROUP BY 子句。
8127 | 16 | 列名 ''%1!.%3!'' 在 ORDER BY 子句中无效，因为该列既不包含在聚合函数中，也不包含在 GROUP BY 子句中。
8128 | 10 | 使用 ''%1!'' 版本 ''%2!'' 来执行扩展存储过程 ''%3!''。
8129 | 16 | 新的磁盘大小必须大于 %1!。请考虑使用 DBCC SHRINKDB。
8130 | 16 | 该设备不是数据库设备。只有数据库设备才能扩充。
8131 | 10 | 扩展存储过程 DLL ''%1!'' 不输出 __GetXpVersion() 函数。详细信息请参见文档中的主题 ''向后兼容性详细信息（级别 1）- 开放式数据服务''。
8132 | 10 | 扩展存储过程 DLL ''%1!'' 报告其版本为 %2!.%3!。服务器预期的版本为 %4!.%5!。
8133 | 16 | CASE 说明中的任一结果表达式均不能是 NULL。
8134 | 16 | 遇到被零除错误。
8135 | 16 | 表级别的约束未指定列的列表，表 ''%1!''。
8136 | 16 | 在 %1! 约束键列表中指定了重复的列，表 ''%2!''。
8138 | 16 | 在外键列的列表中指定的列多于 16 个，表 ''%1!''。
8139 | 16 | 外键中引用列的数目与被引用列的数目不等，表 ''%1!''。
8140 | 16 | 在列级别 %1! 约束中指定了不止一个键，表 ''%2!''。
8141 | 16 | 列 %1! 约束（属于列 ''%2!''）引用了另一列，表 ''%4!''。
8142 | 16 | 在 %1! 约束中不支持子查询，表 ''%2!''。
8143 | 16 | 多次提供了参数 ''%1!''。
8144 | 16 | 为过程或函数 %1! 指定的参数太多。
8145 | 16 | %1! 不是过程 %3! 的参数。
8146 | 16 | 过程 %1! 没有参数，但却为该过程提供了参数。
8147 | 16 | 未能在可为空的列 ''%1!'' 上创建 IDENTITY 特性，表 ''%3!''。
8148 | 16 | 指定了不止一个列 %1! 约束（对列 ''%2!''），表 ''%4!''。
8149 | 16 | 在纤程模式下不支持 OLE 自动化对象。
8150 | 16 | 为列 ''%1!'' 指定了多个 NULL 约束，表 ''%3!''。
8151 | 16 | 为列 ''%1!'' 同时定义了 PRIMARY KEY 和 UNIQUE 约束，表 ''%3!''。只允许定义二者之一。
8152 | 16 | 将截断字符串或二进制数据。
8153 | 0 | 警告：聚合或其它 SET 操作消除了空值。
8154 | 15 | 表 ''%1!'' 不明确。
8155 | 15 | 没有为第 %1! 列（属于 ''%2!''）指定列。
8156 | 15 | 多次为 ''%3!'' 指定了列 ''%1!''。
8157 | 15 | 包含 UNION 运算符的查询表达式中的所有查询都必须在选择列表中包含同样数目的表达式。
8158 | 15 | ''%1!'' 所拥有的列多于列的列表中所指定的列。
8159 | 15 | ''%1!'' 所拥有的列少于列的列表中所指定的列。
8160 | 15 | 仅当 GROUP BY 子句中指定了 CUBE 或 ROLLUP 时，才能指定分组函数。
8161 | 15 | 分组函数的参数与 GROUP BY 子句中的所有表达式都不匹配。
8162 | 16 | 形式参数 ''%1!'' 定义为 OUTPUT，但实际参数却未声明为 OUTPUT。
8163 | 16 | 不能以 DISTINCT 方式选择 text、ntext 或 image 数据类型。
8164 | 16 | INSERT EXEC 语句不能嵌套。
8165 | 16 | 子命令值 %1! 无效。有效范围为从 %2! 到 %3!。
8166 | 16 | 不允许使用约束名称 ''%1!''。约束名称不能以数字号 (#) 开头。
8168 | 16 | 无法创建两个名为 ''%1!'' 的约束。约束名称不允许重复。
8169 | 16 | 将字符串转换为 uniqueidentifier 时出现语法错误。
8170 | 16 | 将 uniqueidentifier 值转换为 char 时结果空间不足。
8171 | 16 | 对象 ''%2!'' 上的提示 ''%1!'' 无效。
8175 | 10 | 未能找到表 %1!。将稍后再尝试解析此表名。
8176 | 16 | Resync 过程需要键值 ''%1!''，但未提供该键值。
8177 | 16 | 无法在 %1! 子句中使用列，除非该列包含在聚合函数或 GROUP BY 子句中。
8178 | 16 | 被准备语句 ''%1!'' 需要参数 %3!，但未提供该参数。
8179 | 16 | 未能找到句柄为 %1! 的被准备语句。
8180 | 16 | 未能准备语句。
8181 | 16 | syscomments 中缺少 ''%1!'' 的文本。必须除去并重建该对象后，才能使用该对象。
8183 | 16 | 在计算列上只允许使用 UNIQUE 或 PRIMARY KEY 约束。
8184 | 16 | 展开 ''*'' 时出错：并非所有列均可比，''*'' 展开了零列。
8185 | 16 | 展开 ''*'' 时出错：在基础表或视图中发现不可比的列。
8186 | 16 | ''%1!'' 函数只能用于用户和系统表。
8190 | 16 | 如果不定义要筛选的表，将无法编译复制筛选过程。
8191 | 16 | 复制筛选过程只能包含 SELECT、GOTO、IF、WHILE、RETURN 和 DECLARE 语句。
8192 | 16 | 复制筛选过程不能有参数。
8193 | 16 | 无法执行标记为 FOR REPLICATION 的过程。
8194 | 16 | 当应用程序角色处于活动状态时，无法执行 USE 语句。
8196 | 16 | 将重复的列指定成了 ROWGUIDCOL。
8197 | 16 | Windows NT 用户 ''%1!'' 没有对服务器的访问权。
8198 | 16 | 未能获得有关 Windows NT 组/用户 ''%1!'' 的信息。
8199 | 16 | 在 EXECUTE <procname> 中，procname 只能是类型为 char、varchar、nchar 或 nvarchar 的字面值或变量。
8501 | 16 | 服务器 ''%1!'' 上的 MSDTC 不可用。
8502 | 20 | 收到了未知的 MSDTC 令牌 ''0x%1!''。
8504 | 20 | 事务导入缓冲区无效。
8506 | 20 | 从 %1! 到 %2! 的事务状态转换请求无效。
8508 | 20 | ''%1!'' 的QueryInterface 失败：%2!。
8509 | 20 | MSDTC 事务的导入失败：%1!。
8510 | 20 | MSDTC 事务的登记失败：%1!。
8511 | 20 | MSDTC 请求的隔离级别 %1! 未知。
8512 | 20 | MSDTC 提交确认失败：%1!。
8513 | 20 | MSDTC 终止确认失败：%1!。
8514 | 20 | MSDTC PREPARE 确认失败：%1!。
8515 | 20 | MSDTC 全局状态无效。
8517 | 20 | 获取 MSDTC PREPARE 信息失败：%1!。
8518 | 20 | MSDTC BEGIN TRANSACTION 失败：%1!。
8519 | 16 | 当前 MSDTC 事务必须由远程客户端提交。
8520 | 20 | 内部 MSDTC 事务的提交失败：%1!。
8521 | 20 | 唤醒状态无效。休眠于 %1!；而唤醒于 %2!。
8522 | 20 | MSDTC 终止了分布式事务。
8523 | 15 | 不允许对 MSDTC 事务使用 PREPARE TRAN 语句。
8524 | 16 | 当前事务未能导出到远程提供程序。已回滚了该事务。
8525 | 16 | 分布式事务已完成。请将此会话登记到新事务或 NULL 事务中。
8601 | 17 | 内部查询处理器错误：查询处理器未能获得对所需接口的访问权。
8602 | 16 | 在索引优化向导中必须显式地包括提示中所使用的索引。
8616 | 10 | 忽略了表 ''%1!'' 的索引提示，因为将该表看作了星型联接中的事实数据表。
8617 | 17 | 查询无效：CUBE 和 ROLLUP 无法计算区分聚合。
8618 | 17 | 警告：查询处理器未能用优化程序生成查询计划，因为 GROUP BY 或 ORDER BY 子句中所有列的总长度超过了 8000 字节。
8619 | 17 | 警告：查询处理器未能用优化程序生成查询计划，因为 GROUP BY 或 ORDER BY 子句中所有列的总长度超过了 8000 字节。请重新提交查询，并且不要在查询中使用 ROBUST PLAN 提示。
8620 | 17 | 内部查询处理器错误：查询处理器遇到了内部限制溢出错误。
8621 | 16 | 内部查询处理器错误：在查询优化过程中，查询处理器用尽了堆栈空间。
8622 | 16 | 由于此查询中定义的提示，查询处理器未能生成查询计划。请重新提交查询，并且不要在查询中指定任何提示，也不要使用 SET FORCEPLAN。
8623 | 16 | 内部查询处理器错误：查询处理器未能生成查询计划。如需了解详细信息，请与您的主要支持提供者联系。
8624 | 16 | 内部 SQL Server 错误。
8625 | 16 | 警告：由于使用了局部联接提示，所以联接次序得以强制实施。
8626 | 16 | 在工作表中只允许有 text 指针，而决不允许有 text、ntext 或 image 列。查询处理器生成的查询计划要求在工作表中有 text、ntext 或 image 列。
8627 | 16 | 由于组合使用了提示和用工作表通过运算符处理的 text、ntext 或 image 数据，查询处理器未能生成查询计划。
8628 | 17 | 等待优化查询时发生超时。请重新运行该查询。
8629 | 16 | 查询处理器未能用优化程序生成查询计划，因为查询无法同时更新聚集键和 text、ntext 或 image 列。
8630 | 17 | 内部查询处理器错误：查询处理器在执行过程中遇到意外错误。
8640 | 17 | 内部查询处理器错误：查询处理器在执行过程中遇到意外的工作表错误。
8642 | 17 | 查询处理器未能为并行查询的执行启动必要的线程资源。
8644 | 16 | 内部查询处理器错误：为执行选择的计划不支持唤醒调用的给定执行例程。
8645 | 17 | 等待执行查询所用的内存资源时发生超时。请重新运行该查询。
8646 | 21 | 行 ID %1! 的索引条目在索引 ID %3!（属于表 %4!，数据库 ''%5!''）中没有找到。
8647 | 20 | 为数据库 ID %1!，对象 ID %2! 扫描 sysindexes 时，返回重复的索引 ID %3!。请对 sysindexes 运行 DBCC CHECKTABLE。
8648 | 20 | 未能将大于页大小的行插入到哈希表中。请用 ROBUST PLAN 提示重新提交查询。
8649 | 17 | 查询已取消，因为此查询的预计开销（%1!）超过了所配置的阈值 %2!。请与系统管理员联系。
8650 | 13 | 查询内并行度导致服务器命令（进程 ID #%1!）死锁。请重新运行该查询，并在查询中用查询提示选项 (maxdop 1) 去掉查询内并行度。
8651 | 17 | 未能执行所请求的操作，因为可用内存少于最小查询内存。请减小 ''min memory per query'' 服务器配置选项的配置值。
8653 | 17 | 警告：查询处理器无法生成计划，因为表 ''%1!'' 已标记为 OFFLINE。
8654 | 16 | 未能为给定的语句生成游标计划，因为该语句包含 textptr ( inrow lob )。
8660 | 16 | 无法在视图 ''%1!'' 上创建索引，因为该视图的定义中并未包括 GROUP BY 子句中的所有列。
8661 | 16 | 无法在视图 ''%1!'' 上创建聚集索引，因为索引键包括 GROUP BY 子句中所不包括的列。
8662 | 16 | 无法在视图 ''%1!'' 上创建索引，因为该视图的定义中包括未知值（可为空表达式的求和）。
8663 | 16 | 无法在视图 ''%1!'' 上创建索引，因为该视图的定义中不包括 count_big(*)。
8664 | 16 | 无法在视图 ''%1!'' 上创建索引，因为该视图的定义中包括重复列名。
8665 | 16 | 无法在视图 ''%1!'' 上创建索引，因为没有一行可满足该视图的定义。
8666 | 10 | 警告：优化程序无法使用索引，因为视图的选择列表包含非聚合表达式。
8667 | 10 | 警告：优化程序无法使用索引，因为视图中的排序依据列表构成了键，因而该排序依据列表是冗余的。
8680 | 17 | 内部查询处理器错误：查询处理器在处理远程查询阶段的过程中遇到意外错误。
8901 | 13 | DBCC 执行过程中检测到死锁。请完成正在进行的事务，然后重试此语句。
8902 | 17 | DBCC 处理过程中发生内存分配错误。
8903 | 16 | 扩展盘区 %1!（属于数据库 ID %2!）在 GAM %3! 和 SGAM %4! 中均进行了分配。
8904 | 16 | 不止一个分配对象分配了扩展盘区 %1!（属于数据库 ID %2!）。
8905 | 16 | 扩展盘区 %1!（属于数据库 ID %2!）在 GAM 中标记为已分配，但没有 SGAM 或 IAM 分配过该盘区。
8906 | 16 | 扩展盘区 %1!（属于数据库 ID %2!）在 SGAM %3! 和 PFS %4! 中进行了分配，但未在任何 IAM 中进行过分配。PFS 标志 ''%5!''。
8908 | 16 | 表错误：数据库 ID %1!，对象 ID %2!，索引 ID %3!。%4!->next = %5!，但 %6!->prev = %7!。
8909 | 16 | 表错误：对象 ID %1!，索引 ID %2!，页 ID %3!。页首结构中的 PageId = %4!。
8910 | 16 | 页 %1!（属于数据库 ID %2!）既分配给对象 ID %3!，索引 ID %4!，又分配给对象 ID %5!，索引 ID %6!。
8911 | 10 | 该错误已修复。
8912 | 10 | %1! 修复了 %3! 个分配错误和 %4! 个一致性错误（在数据库 ''%5!'' 中）。
8913 | 16 | 扩展盘区 %1! 分配给了 ''%2!'' 和至少一个其它对象。
8914 | 10 | 页 %1!，对象 ID %2!，索引 ID %3!（属于数据库 ID %4!）的 PFS 可用空间信息不正确。预期的值为 %5!，而实际值为 %6!。
8915 | 10 | 文件 %1!（混合扩展盘区数目 = %2!，混合页数目 = %3!）。
8916 | 10 | 对象 ID %1!，索引 ID %2!，数据扩展盘区数目 %3!，页数目 %4!，混合扩展盘区页数目 %5!。
8917 | 10 | 对象 ID %1!，索引 ID %2!，索引扩展盘区数目 %3!，页数目 %4!，混合扩展盘区页数目 %5!。
8918 | 10 | （混合扩展盘区数目 = %1!，混合页数目 = %2!）在此数据库中。
8919 | 16 | 单页分配 %1!（在表 %2!，对象 ID %3!，索引 ID %4! 中）没有在 PFS 页 ID %5! 中分配。
8920 | 16 | 在用户事务内部无法执行 %1! 操作。请终止事务后重新发出该语句。
8921 | 16 | CHECKTABLE 已终止。收集事实数据时检测到失败。可能是因为 tempdb 空间用尽或某一系统表不一致。请检查前面的错误信息。
8922 | 10 | 未能修复此错误。
8923 | 10 | DBCC 语句的修复级别导致回避了此修复。
8924 | 10 | 修复此错误要求首先修正其它错误。
8925 | 16 | 表错误：跨对象链接：页 %1!，槽 %2!（位于对象 ID %3!，索引 ID %4! 中）指向了页 %5!，槽 %6!（位于对象 ID %7!，索引 ID %8! 中）。
8926 | 16 | 表错误：跨对象链接：父页 %1!，槽 %2!（位于对象 ID %3!，索引 ID %4! 中）和页 %5!，槽 %6!（位于对象 ID %7!，索引 ID %8! 中）的下一页指针指向了页 %9!，但该页不在同一对象中。
8927 | 16 | 对象 ID %1!，索引 ID %2!：页头中的幻影记录数目（%3!）与页中发现的幻影记录数目（%4!）不匹配（页 %5!）。
8928 | 16 | 对象 ID %1!，索引 ID %2!：未能处理页 %3!。详细信息请参见其它错误。
8929 | 16 | 对象 ID %1!：在文本 ID %2! 中发现错误，该文本的所有者是由 %3! 标识的数据记录。
8930 | 16 | 表错误：对象 ID %1!，索引 ID %2! 中有跨对象的链的链接。页 %3! 指向了 %4!（位于对象 ID %5!，索引 ID %6! 中）。
8931 | 16 | 表错误：对象 ID %1!，索引 ID %2! 的 B 树级别不匹配，页 %3!。级别 %4! 与级别 %5!（来自父代 %6!）不匹配。
8932 | 16 | 表错误：对象 ID %1!，索引 ID %2!，列 ''%3!''。列 ID %5! 对于此表无效。有效范围为从 1 到 %6!。
8933 | 16 | 表错误：对象 ID %1!，索引 ID %2!。页 %3! 上的低键值（级别 %4!）不 %5! 父代 %6! 槽 %7! 中的键值。
8934 | 16 | 表错误：对象 ID %1!，索引 ID %2!。页 %3! 上的高键值（级别 %4!）不小于下一页的父代 %5 槽 %6! 中的低键值。（下一页为 %7!。）
8935 | 16 | 表错误：对象 ID %1!，索引 ID %2!。上一页链接 %3!（位于页 %4! 上）与父代所预期的此页的上一页 %5! 不匹配。（父代 %6!，槽 %7!。）
8936 | 16 | 表错误：对象 ID %1!，索引 ID %2!。B 树链的链接不匹配。%3!->next = %4!，但 %5!->Prev = %6!。
8937 | 16 | 表错误：对象 ID %1!，索引 ID %2!。B 树页 %3! 有两个父节点 %4!，槽 %5! 和 %6!，槽 %7!。
8938 | 16 | 表错误：页 %1!，对象 ID %2!，索引 ID %3!。意外的页类型 %4!。
8939 | 16 | 表错误：对象 ID %1!，索引 ID %2!，页 %3!。测试（%4!）失败。值为 %5! 和 %6!。
8940 | 16 | 表错误：对象 ID %1!，索引 ID %2!，页 %3!。测试（%4!）失败。地址 0x%5! 未对齐。
8941 | 16 | 表错误：对象 ID %1!，索引 ID %2!，页 %3!。测试（%4!）失败。槽 %5!，偏移量 0x%6! 无效。
8942 | 16 | 表错误：对象 ID %1!，索引 ID %2!，页 %3!。测试（%4!）失败。槽 %5!，偏移量 0x%6! 与前一行重叠。
8943 | 16 | 表错误：对象 ID %1!，索引 ID %2!，页 %3!。测试（%4!）失败。槽 %5!，行扩展到了 0x%6! 处的可用空间。
8944 | 16 | 表错误：对象 ID %1!，索引 ID %2!，页 %3!，行 %4!。测试（%5!）失败。值为 %6! 和 %7!。
8945 | 16 | 表错误：对象 ID %1!，索引 ID %2! 将重建。
8946 | 16 | 表错误：分配页 %1! 的 %2! 页首结构值无效。类型为 %3!。请检查该页上的类型、对象 ID 和页 ID。
8947 | 16 | 表错误：对象 ID %1!，索引 ID %2! 的多个 IAM 页包含对同一间隔的分配。IAM 页 %3! 和 %4!。
8948 | 16 | 数据库错误：页 %1! 用错误的类型进行了标记（在 PFS 页 %2! 中）。PFS 状态为 0x%3!，而预期为 0x%4!。
8949 | 10 | %1! 修复了 %3! 个分配错误和 %4! 个一致性错误（在表 ''%5!'' 中，该表的对象 ID 为 %6!）。
8950 | 16 | %1! 修复了 %3! 个分配错误和 %4! 个一致性错误，这些错误并不与任何单个的对象相关联。
8951 | 16 | 表错误：表 ''%1!''（ID %2!）。索引 ''%3!''（ID %4!）中下列行的键缺少或无效：
8952 | 16 | 表错误：数据库 ''%1!''，索引 ''%2!.%3!''（ID %4!）（索引 ID %5!）。下列键的键多余或无效：
8953 | 10 | 修复：已删除文本列，文本 ID %1!（属于对象 ID %2!，位于页 %3!，槽 %4!）。
8954 | 10 | %1! 发现了 %3! 个分配错误和 %4! 个一致性错误，这些错误并不与任何单个的对象相关联。
8955 | 16 | 数据行（%1!:%2!:%3!）（由 %4! 标识）的索引值为 %5!。
8956 | 16 | 索引行（%1!:%2!:%3!）（其值为 %4!）指向由 %5! 标识的数据行。
8957 | 10 | 由 %5! 执行的 DBCC %1! (%2!%3!%4!) 发现了 %6! 个错误，修复了 %7! 个错误。
8958 | 10 | %1! 是最低的修复级别（对于由 DBCC %2! (%3! %4!) 发现的错误而言）。
8959 | 16 | 表错误：IAM 页 %1!（用于对象 ID %2!，索引 ID %3!）在 IAM 链中参与了对象 ID %4!，索引 ID %5! 的链接关系，该链接关系由页 %6! 给定。
8960 | 23 | 表错误：页 %1!，槽 %2!，列 %3! 不是有效的复杂列。
8961 | 23 | 表错误：对象 ID %1!。text、ntext 或 image 节点（位于页 %2!，槽 %3!，文本 ID %4!）与该节点位于页 %5!，槽 %6! 处的引用不匹配。
8962 | 23 | 表错误：text、ntext 或 image 节点（位于页 %1!，槽 %2!，文本 ID %3!）的节点类型 %4 不正确。
8963 | 23 | 表错误：text、ntext 或 image 节点（位于页 %1!，槽 %2!，文本 ID %3!）的类型为 %4!。无法将该节点放到类型为 %5! 的页上。
8964 | 23 | 表错误：对象 ID %1!。text、ntext 或 image 节点（位于页 %2!，槽 %3!，文本 ID %4!）未被引用。
8965 | 23 | 表错误：对象 ID %1!。text、ntext 或 image 节点（位于页 %2!，槽 %3!，文本 ID %4!）被页 %5!，槽 %6! 引用，但在扫描中未曾发现该节点。
8966 | 22 | 未能读取并闩锁页 %1!（用闩锁类型 %2!）。%3! 失败。
8967 | 16 | 表错误：在 %1!（对象 ID %2!，索引 ID %3!）中检测到无效的值。已跳过行。
8968 | 16 | 表错误：%1! 页%2!（对象 ID %3!，索引 ID %4!）超出了此数据库的范围。
8969 | 16 | 表错误：IAM 链的链接出错：对象 ID %1!，索引 ID %2!。IAM 页 %3! 的下一页为 %4!，但页 %5! 的上一页链接却是 %6!。
8970 | 16 | 行错误：对象 ID %1!，索引 ID %2!，页 ID %3!，行 ID %4!。列 ''%5!'' 是以 NOT NULL 方式创建的，但在该行中却是 NULL。
8971 | 16 | 正向行不匹配：对象 ID %1!，页 %2!，槽 %3! 指向了正向行页 %4!，槽 %5!；而正向行则回指到页 %6!，槽 %7!。
8972 | 16 | 不止一行引用了正向行。对象 ID %1!，页 %2!，槽 %3! 错误地指向了正向行页 %4!，槽 %5!；而正向行则正确地指回到页 %6!，槽 %7!。
8973 | 16 | 对象 ID %1!，索引 ID %2! 的 CHECKTABLE 处理两次遇到页 %3!，槽 %4!。可能是因为内部错误或分配错误。
8974 | 16 | 不止一个节点引用了文本节点。对象 ID %1!。text、ntext 或 image 节点（位于页 %2!，槽 %3!，文本 ID %4!）被页 %5!，槽 %6! 指向，同时又被页 %7!，槽 %8! 指向。
8975 | 16 | 表错误：对象 ID %1!，索引 ID %2!。子页指针 %3!（位于 PageId %4!，槽 %5!）不是此数据库的有效页。
8976 | 16 | 表错误：对象 ID %1!，索引 ID %2!。在扫描操作中未发现页 %3!，而其父代 %4! 和上一页 %5! 指向了该页。请检查先前的错误。
8978 | 16 | 表错误：对象 ID %1!，索引 ID %2!。页 %3! 缺少上一页 %4! 对它的引用。可能是因为链的链接有问题。
8979 | 16 | 表错误：对象 ID %1!，索引 ID %2!。页 %3! 缺少父代（未知）和上一节点（页 %4!）对它的引用。可能是因为 sysindexes 中的根条目有错误。
8980 | 16 | 表错误：对象 ID %1!，索引 ID %2!。索引节点页 %3!，槽 %4! 指向子页 %5! 和上一子页 %6!，但未遇到这些页。
8981 | 16 | 表错误：对象 ID %1!，索引 ID %2!。%3! 的下一页指针指向了页 %4!。但既未遇到 %5!，也未遇到其父代。可能是因为链的链接有错误。
8982 | 16 | 表错误：跨对象链接。页 %1!->next（属于对象 ID %2!，索引 ID %3!）指向了页 %4!（属于对象 ID %5!，索引 ID %6!），但该页不在同一索引中。
8983 | 10 | 文件 %1!。扩展盘区数目 %2!，已用页数目 %3!，保留页数目 %4!，混合扩展盘区数目 %5!，混合页数目 %6!。
8984 | 10 | 对象 ID %1!，索引 ID %2!。%3! 的分配。IAM %4!，扩展盘区数目 %5!，已用页数目 %6!，混合页数目 %7!。
8985 | 16 | 未能在 sysfiles 中找到文件 ''%1!''。
8986 | 16 | 发现的错误数目（%1!）太多（属于对象 ID %2!）。若要查看所有的错误信息，请用 "WITH ALL_ERRORMSGS" 重新运行该语句。
8987 | 16 | DBCC 语句 ''%1!'' 没有可用的帮助。
8988 | 10 | 数据库 ''%1!'' 的架构正在更改。可能会由于架构更改正在进行而发现虚假的分配问题。
8989 | 10 | %1! 发现了 %3! 个分配错误和 %4! 个一致性错误（在数据库 ''%5!'' 中）。
8990 | 10 | %1! 发现了 %3! 个分配错误和 %4! 个一致性错误（在表 ''%5!'' 中，该表的对象 ID 为 %6!）。
8991 | 16 | 0x%1! + 0x%2! 字节不是有效的地址范围。
8992 | 16 | 数据库 ID %1!，对象 ''%2!''（ID %3!）。在 %4! 上检测到数据链的循环。
8993 | 16 | 对象 ID %1!，前推行页 %2!，槽 %3! 指向了页 %4!，槽 %5!，但未遇到正向行。可能是因为分配错误。
8994 | 16 | 对象 ID %1!，正向行页 %2!，槽 %3! 应被前推行页 %4!，槽 %5! 指向，但未遇到前推行。可能是因为分配错误。
8995 | 16 | 系统表 ''%1!''（对象 ID %3!，索引 ID %4!）位于文件组 %5! 中。所有的系统表都必须位于文件组 %6! 中。
8996 | 16 | 对象 ID %2!，索引 ID %3! 的 IAM 页 %1! 控制着文件组 %4! 中的页，这些页应在文件组 %5! 中。
8997 | 16 | 单页分配 %1!（属于对象 ID %2!，索引 ID %3!）位于文件组 %4! 中，但它应位于文件组 %5! 中。
8998 | 16 | GAM、SGAM 或 PFS 页上的页错误导致 CHECKALLOC 无法验证数据库 ID %1! 中从 %2! 到 %3! 的页。原因请参见其它错误信息。
8999 | 10 | 数据库 tempdb 的分配错误妨碍了进一步的 %1! 处理。


错误 9000 -9999

错误 | 严重度 | 描述（消息文本）
9001 | 10 | 数据库 ''%1!'' 的日志不可用。
9002 | 19 | 数据库 ''%1!'' 的日志已满。请备份该数据库的事务日志以释放一些日志空间。
9003 | 20 | LSN %1! 无效。该 LSN 是传递给数据库 ''%2!'' 中的日志扫描操作的。
9004 | 21 | 处理数据库 ''%1!'' 的日志时出错。
9005 | 16 | OpenRowset(DBLog, ...) 中指定的开始 LSN 或结尾 LSN 无效。
9006 | 10 | 无法收缩日志文件 %1!（%2!），因为逻辑日志文件的总数不能少于 %3!。
9007 | 10 | 无法收缩日志文件 %1!（%2!），因为所请求的大小 %3! 大于最后一个逻辑日志文件的开始。
9008 | 10 | 无法收缩日志文件 %1!（%2!），因为所有的逻辑日志文件都在使用。
9009 | 10 | 由于所需的最小日志空间，无法收缩日志文件 %1!（%2!）。
9010 | 14 | 用户没有查询虚拟表 DBLog 的权限。只有 sysadmin 固定服务器角色和 db_owner 固定数据库角色的成员才有此权限


错误 10000 -- 10999

 疑难解答

错误 10000 — 10999

错误 | 严重度 | 描述（消息文本）
10000 | 16 | 未知的提供程序错误。
10001 | 16 | 提供程序报告了意外的灾难性错误。
10002 | 16 | 提供程序未实现此功能。
10003 | 16 | 提供程序已用尽内存。
10004 | 16 | 提供程序报告一个或多个参数无效。
10005 | 16 | 提供程序不支持接口。
10006 | 16 | 提供程序指出使用了无效的指针。
10007 | 16 | 提供程序指出使用了无效的句柄。
10008 | 16 | 提供程序终止了操作。
10009 | 16 | 提供程序未给出有关错误的任何信息。
10010 | 16 | 尚不能向提供程序提供完成此操作所必需的数据。
10011 | 16 | 访问遭拒绝。
10021 | 16 | 由于达到了资源限制，提供程序终止了执行。
10022 | 16 | 提供程序调用了使用者的 IRowsetNotify 中的一个方法，而该方法尚未返回。
10023 | 16 | 提供程序不支持必要的方法。
10024 | 16 | 提供程序指出用户没有执行该操作的权限。
10025 | 16 | 提供程序在外部进程中导致了服务器错误。
10026 | 16 | 未设置命令文本。
10027 | 16 | 未准备命令。
10028 | 16 | 验证失败。
10031 | 16 | 由于未能设置一个或多个属性而出错。
10032 | 16 | 无法返回多个结果集（提供程序不支持）。
10033 | 16 | 指定的索引不存在，或提供程序不支持在此数据源上进行索引扫描。
10034 | 16 | 指定的表不存在。
10035 | 16 | 没有为一个或多个必需的参数给出值。
10041 | 16 | 未能设置任何属性值。
10042 | 16 | 当存在打开的行集时，无法设置任何属性。
10051 | 16 | 设置数据时出错。
10052 | 16 | 在提示过程中，提供程序取消了插入操作。
10053 | 16 | 由于除符号不匹配和溢出之外的其它原因，未能转换数据值。
10054 | 16 | 一列或多列的数据值溢出了提供程序所用类型的取值范围。
10055 | 16 | 数据违反了一列或多列的完整性约束。
10056 | 16 | 具有挂起更改的行数已超过 DBPROP_MAXPENDINGROWS 属性所指定的限制。
10057 | 16 | 无法创建行。将超过行集所支持的活动行总数。
10058 | 16 | 使用者在释放先前检索到的行句柄之前，不能插入新行。
10061 | 16 | 为一列或多列设置数据时出错。
10062 | 16 | 在提示过程中，提供程序取消了更改操作。
10063 | 16 | 由于除符号不匹配和溢出之外的其它原因，未能转换数据值。
10064 | 16 | 一列或多列的数据值溢出了提供程序所用类型的取值范围。
10065 | 16 | 数据违反了一列或多列的完整性约束。
10066 | 16 | 具有挂起更改的行数已超过 DBPROP_MAXPENDINGROWS 属性所指定的限制。
10067 | 16 | 行集正在使用乐观并发，而自提取或重新同步包含列值的行后，该列值又有更改。
10068 | 16 | 使用者未能删除行。某一删除操作正处于挂起状态，或者已传输到数据源。
10069 | 16 | 使用者未能删除行。插入操作已传输到数据源。
10075 | 16 | 删除行时出错。
10081 | 16 | 行集使用了集成索引，但没有当前索引。
10085 | 16 | 在提示过程中取消了表上的 RestartPosition。
10086 | 16 | 该表是用实时数据流生成的，无法重新启动该位置。
10087 | 16 | 提供程序未释放某些现有的行。
10088 | 16 | 在创建行集的对象中未指定列的顺序。提供程序不得不重新执行命令以将下次提取位置重新定位到其初始位置，列的顺序也已更改。


错误 11000 -- 11999

 疑难解答

错误 11000 — 11999

错误 | 严重度 | 描述（消息文本）
11000 | 16 | 此列的状态代码未知。
11001 | 16 | 成功地返回了非 NULL 值。
11002 | 16 | 发生延迟的访问程序验证。此列的绑定无效。
11003 | 16 | 由于除符号不匹配和溢出之外的其它原因，未能转换数据值。
11004 | 16 | 成功地返回了 NULL 值。
11005 | 16 | 成功地返回了截断的值。
11006 | 16 | 由于符号不匹配，未能转换数据类型。
11007 | 16 | 由于数据值溢出了提供程序所用数据类型的取值范围，转换失败。
11008 | 16 | 提供程序无法对此列分配内存或打开另一个存储对象。
11009 | 16 | 提供程序无法确定此列的值。
11010 | 16 | 用户没有写入该列的权限。
11011 | 16 | 数据值违反了该列的完整性约束。
11012 | 16 | 数据值违反了该列的架构。
11013 | 16 | 列的状态有错误。
11014 | 16 | 列使用了默认值。
11015 | 16 | 设置数据时跳过了该列。
11031 | 16 | 已成功删除该行。
11032 | 16 | 表处于即时更新模式下，在数据源中删除一行将导致删除多行。
11033 | 16 | 行已释放，即使该行有挂起的更改。
11034 | 16 | 在提示过程中取消了删除行的操作。
11036 | 16 | 行集正在使用乐观并发，而自提取或重新同步包含列值的行后，该列值又有更改。
11037 | 16 | 该行有挂起的删除操作，或该删除操作已传送到了数据源。
11038 | 16 | 该行是挂起插入行。
11039 | 16 | DBPROP_CHANGEINSERTEDROWS 是 VARIANT_FALSE，而该行的插入操作已传送到了数据源。
11040 | 16 | 删除该行违反了该列或表的完整性约束。
11041 | 16 | 行句柄无效，或当前线程对该行句柄无访问权。
11042 | 16 | 删除该行将导致超过行集属性 DBPROP_MAXPENDINGROWS 所指定的挂起更改数目限制。
11043 | 16 | 该行有打开的存储对象。
11044 | 16 | 提供程序用尽了内存，未能提取行。
11045 | 16 | 用户没有删除该行的足够权限。
11046 | 16 | 表处于即时更新模式下，由于达到了服务器上的某一限制（如查询执行超时）而未删除该行。
11047 | 16 | 更新操作不满足架构要求。
11048 | 16 | 出现可恢复的、特定于提供程序的错误，如 RPC 失败。
11100 | 16 | 提供程序指出与其它属性或要求发生了冲突。
11101 | 16 | 未能获得访问 text、ntext 或 image 所需的接口。
11102 | 16 | 提供程序未能支持必需的行查找接口。
11103 | 16 | 提供程序未能支持 UPDATE/DELETE/INSERT 语句必需的接口。
11104 | 16 | 提供程序未能支持此表上的插入。
11105 | 16 | 提供程序未能支持此表上的更新。
11106 | 16 | 提供程序未能支持此表上的删除。
11107 | 16 | 提供程序未能支持行查找位置。
11108 | 16 | 提供程序未能支持必需的属性。
11109 | 16 | 提供程序不支持在此数据源上进行索引扫描。


错误 13000 -- 13999

 疑难解答

错误 13000 — 13999

错误 | 严重度 | 描述（消息文本）
13001 | 10 | 数据页
13002 | 10 | 索引页
13003 | 10 | 叶级页
13004 | 10 | 最后的
13005 | 10 | 根
13006 | 10 | 读取自
13007 | 10 | 发送到
13008 | 10 | 接收
13009 | 10 | 发送
13010 | 10 | 读取
13011 | 10 | 等待
13012 | 10 | USE 数据库语句
13013 | 10 | 过程或触发器
13014 | 10 | DISTINCT 子句
13015 | 10 | 视图
13016 | 10 | INTO 子句
13017 | 10 | ORDER BY 子句
13018 | 10 | COMPUTE 子句
13019 | 10 | SELECT INTO 语句
13020 | 10 | 选项
13021 | 10 | 偏移量选项
13022 | 10 | 统计选项
13023 | 10 | 参数选项
13024 | 10 | 函数名
13025 | 10 | varbinary (128) NOT NULL
13026 | 10 | 参数
13027 | 10 | 转换规范
13028 | 10 | 索引
13029 | 10 | 表
13030 | 10 | 数据库
13031 | 10 | 过程
13032 | 10 | 触发器
13033 | 10 | 视图
13034 | 10 | 默认值
13035 | 10 | 规则
13036 | 10 | 系统表
13037 | 10 | 未知类型
13038 | 10 | SET 语句
13039 | 10 | 列
13040 | 10 | 类型
13041 | 10 | 字符串
13042 | 10 | 整型
13043 | 10 | 标识符
13044 | 10 | 数字
13045 | 10 | 整数值
13046 | 10 | 浮点值
13047 | 10 | 对象
13048 | 10 | 列标题
13076 | 10 | 赋值
13077 | 10 | 游标声明
13078 | 10 | 复制筛选
13079 | 10 | 变量赋值
13080 | 10 | 统计
13081 | 10 | 文件
13082 | 10 | 文件组
13083 | 10 | 服务器
13084 | 0 | 写入
13085 | 0 | 函数
13086 | 10 | 数据库排序规则
13087 | 10 | 除去
13088 | 10 | 更改


错误 14000 -- 14999

 疑难解答

错误 14000 — 14999

错误 | 严重度 | 描述（消息文本）
14002 | 16 | 未能找到任务 ID 为 %1! 的 ''Sync'' 子系统。
14003 | 16 | 必须提供发布名称。
14004 | 16 | %1! 必须位于当前数据库中。
14005 | 16 | 未能除去发布。该发布已有订阅。
14006 | 16 | 未能除去发布。
14008 | 11 | 不存在发布。
14009 | 11 | 没有属于发布 ''%1!'' 的项目。
14010 | 16 | 远程服务器未定义为订阅内容服务器。
14012 | 16 | @status 参数的值必须是 ''active'' 或 ''inactive''。
14013 | 16 | 没有使此数据库可以发布。
14014 | 16 | 同步方法 (@sync_method) 必须是 ''[bcp] native''、''[bcp] character''、''concurrent'' 或 ''concurrent_c''。
14015 | 16 | 复制频率 (@repl_freq) 必须是 ''continuous'' 或 ''snapshot''。
14016 | 16 | 发布 ''%1!'' 已存在。
14017 | 16 | @restricted 参数值无效。有效的选项为 ''true'' 或 ''false''。
14018 | 16 | 未能创建发布。
14019 | 16 | @operation 参数值必须是 ''add'' 或 ''drop''。
14020 | 16 | 未能获得指定列的列 ID。架构复制失败。
14021 | 16 | 未能正确地将列添加到项目中。
14022 | 16 | @property 参数值必须是 ''description''、''sync_object''、''type''、''ins_cmd''、''del_cmd''、''upd_cmd''、''filter''、''dest_table''、''dest_object''、''creation_script''、''pre_creation_cmd''、''status''、''schema_option'' 或 ''destination_owner''。
14023 | 16 | 类型必须是 ''[indexed view] logbased''、''[indexed view] logbased manualfilter''、''[indexed view] logbased manualview''、''[indexed view] logbased manualboth'' 或 ''( view | indexed view | proc | func ) schema only''。
14025 | 10 | 项目更新成功。
14027 | 11 | %1! 在当前数据库中不存在。
14028 | 16 | 只有用户表、具体化视图和存储过程可发布为 ''logbased'' 项目。
14029 | 16 | 垂直分区开关必须是 ''true'' 或 ''false''。
14030 | 16 | 项目 ''%1!'' 存在于发布 ''%2!'' 中。
14031 | 16 | 只有用户表和视图才是有效的同步对象。
14032 | 16 | 参数 %1! 的值不能是 ''all''。复制存储过程保留了该值。
14033 | 16 | 由于存在对该发布的活动订阅，未能更改复制频率。
14034 | 16 | 发布名称 (@publication) 不能是关键字 ''all''。
14035 | 16 | 复制选项 ''%1!''（属于数据库 ''%2!''）已设置为 true。
14036 | 16 | 未能使数据库可以发布。
14037 | 16 | 数据库 ''%2!'' 的复制选项 ''%1!'' 已设置为 false。
14038 | 16 | 未能使数据库不可发布。
14039 | 16 | 未能为项目视图构造列子句。请减少列数目，或手动创建视图。
14040 | 16 | 服务器 ''%1!'' 已经是订阅服务器。
14042 | 16 | 未能创建订阅服务器。
14043 | 16 | 参数 %1! 不能是 NULL。
14046 | 16 | 未能除去项目。存在对该项目的订阅。
14047 | 16 | 未能除去 %1!。
14048 | 16 | 服务器 ''%1!'' 不是订阅服务器。
14049 | 16 | 用于复制的存储过程是唯一可用作筛选的对象。
14050 | 11 | 该发布或项目中没有订阅。
14051 | 16 | 参数值必须是 ''sync_type'' 或 ''dest_db''。
14052 | 16 | @sync_type 参数值必须是 ''automatic'' 或 ''none''。
14053 | 16 | 目前无法更新订阅。
14054 | 10 | 已成功更新了订阅。
14055 | 10 | 订阅不存在。
14056 | 16 | 目前无法除去订阅。
14057 | 16 | 未能创建订阅。
14058 | 16 | 订阅已存在。
14059 | 16 | 不能为具有 allow_sync_tran、allow_queued_tran 或 allow_dts 属性的发布创建具体化视图项目。
14061 | 16 | @pre_creation_cmd 参数值必须是 ''none''、''drop''、''delete'' 或 ''truncate''。
14062 | 10 | 已除去订阅服务器。
14063 | 11 | 远程服务器不存在，或未指定为有效的订阅服务器。
14065 | 16 | @status 参数值必须是 ''initiated''、''active''、''inactive'' 或 ''subscribed''。
14066 | 16 | 前一个状态必须是 ''active''、''inactive'' 或 ''subscribed''。
14067 | 16 | 该状态值与上一个状态值相同。
14068 | 16 | 未能更新 sysobjects。未能更改订阅状态。
14069 | 16 | 未能更新 sysarticles。未能更改订阅状态。
14070 | 16 | 未能更新分发数据库订阅表。未能更改订阅状态。
14071 | 16 | 未能为本地服务器找到分发服务器或分发数据库。可能未安装分发服务器，也可能在分发服务器上未将本地服务器配置为分发发布者。
14074 | 16 | 服务器 ''%1!'' 已列为发布服务器。
14075 | 16 | 目前无法创建发布服务器。
14076 | 16 | 未能将复制登录权限授予 ''%1!''。
14077 | 10 | 已成功地更新了发布。
14078 | 16 | 参数必须是 ''description''、''taskid''、''sync_method''、''status''、''repl_freq''、''restricted''、''retention''、''immediate_sync''、''enabled_for_internet''、''allow_push''、''allow_pull''、''allow_anonymous'' 或 ''retention''。
14080 | 11 | 远程服务器不存在，或未指定为有效的发布服务器。
14085 | 16 | 未能从分发服务器获得订阅服务器信息。
14088 | 16 | 表 ''%1!'' 中必须有主键，才能用基于事务的方法来发布该表。
14089 | 16 | 如果具体化视图 ''%1!'' 将用基于事务的方法发布，那么该视图上的聚集索引就不能包含可为空的列。
14090 | 16 | 在除去列后，对项目同步对象取值时出错。项目 ''%1!'' 的筛选子句不能引用已除去的列。
14091 | 16 | 传递给 sp_helpreplicationdb 的 @type 参数必须是 ''pub'' 或 ''sub''。
14092 | 16 | 未能更改项目，因为存在对该项目的订阅。
14093 | 16 | 无法直接在发布 ''%1!'' 授予或废除访问权，因为该发布使用了默认的发布访问列表。
14094 | 16 | 未能订阅项目 ''%1!''，因为异类订阅服务器 ''%2!'' 不支持 @pre_creation_cmd 参数值 ''truncate''。
14095 | 16 | 未能订阅发布 ''%1!''，因为异类订阅服务器 ''%2!'' 只支持 @sync_method 参数值 ''bcp character''。
14096 | 16 | 如果 @pre_creation_cmd 参数值为 ''drop''，那么就必须指定表创作脚本的路径和名称。
14097 | 16 | ''status'' 的值必须是 ''no column names''、''include column names''、''string literals''、''parameters''、''DTS horizontal partitions'' 或 ''no DTS horizontal partitions''。
14098 | 16 | 无法除去分发发布者 ''%1!''。远程发布服务器正在使用 ''%2!'' 作为分发服务器。
14099 | 16 | 服务器 ''%1!'' 已定义为分发服务器。
14100 | 16 | 当订阅使用并发快照处理的发布时，指定所有的项目。
14101 | 16 | 发布 ''%1!'' 已定义了快照代理程序。
14102 | 16 | 当取消订阅使用并发快照处理的发布时，指定所有的项目。
14105 | 10 | 已成功地更新了分发数据库属性 ''%1!''。
14106 | 10 | 分发保持期必须大于 0。
14107 | 10 | @max_distretention 的值必须大于 @min_distretention 的值。
14108 | 10 | 已从 %2! 中删除 %1! 条历史记录。
14109 | 10 | @security_mode 参数值必须是 0（SQL Server 身份验证）或 1（Windows 身份验证）。
14110 | 16 | 对于存储过程项目，@property 参数值必须是 ''description''、''dest_table''、''dest_object''、''creation_script''、''pre_creation_cmd''、''schema_option'' 或 ''destination_owner''。
14111 | 16 | @pre_creation_cmd 参数值必须是 ''none'' 或 ''drop''。
14112 | 16 | 此过程只能对基于表的项目执行。
14113 | 16 | 未能执行 ''%1!''。请在安装目录中检查 ''%2!''。
14114 | 16 | 未将 ''%1!'' 配置为分发服务器。
14115 | 16 | 属性参数值必须是 %1!。
14117 | 16 | 未将 ''%1!'' 配置为分发数据库。
14118 | 16 | 存储过程只能作为 ''serializable proc exec'' 项目、''proc exec'' 项目或 ''proc schema only'' 项目来发布。
14119 | 16 | 未能添加分发数据库 ''%1!''。此分发数据库已存在。
14120 | 16 | 未能除去分发数据库 ''%1!''。此分发数据库与某一发布服务器相关联。
14121 | 16 | 未能除去分发服务器 ''%1!''。此分发服务器有关联的分发数据库。
14122 | 16 | 对于 immediate_sync 发布，@article 参数值必须是 ''all''。
14123 | 16 | 已不再支持订阅的 @sync_type 参数值 ''manual''。
14124 | 16 | 发布中必须至少包含一个项目之后，才能创建对该发布的订阅。
14126 | 16 | 您没有完成该操作所必须的权限。
14128 | 16 | @subscription_type 参数值无效。有效的选项为 ''push'' 或 ''pull''。
14129 | 16 | 当添加对 immediate_sync 发布的订阅时，对于 sync_type 为 ''automatic'' 的情况，@status 参数值必须是 NULL。
14135 | 16 | 没有对发布服务器 ''%1!''，发布服务器数据库 ''%2!''，发布 ''%3!'' 的订阅。
14136 | 16 | 复制存储过程保留了关键字 ''all''。
14137 | 16 | @value 参数值必须是 ''true'' 或 ''false''。
14138 | 16 | 无效的选项名 ''%1!''。
14139 | 16 | 复制系统表 ''%1!'' 已存在。
14143 | 16 | 无法除去分发发布服务器 ''%1!''。在分发数据库 ''%2!'' 中有与该服务器相关联的订阅服务器。
14144 | 16 | 无法除去订户 ''%1!''。在发布数据库 ''%2!'' 中已有该订户的订阅。
14146 | 16 | 项目参数 ''@schema_option'' 不能是 NULL。
14147 | 16 | 已不再支持受限发布。
14148 | 16 | ''%1!'' 值无效。有效值为 ''true'' 或 ''false''。
14149 | 10 | 已删除 %1! 条复制历史记录，花费 %2! 秒（%3! 行/秒）。
14150 | 10 | 复制 — %1!：代理程序 %2! 已成功。%3!
14151 | 18 | 复制 — %1!：代理程序 %2! 失败。%3!
14152 | 10 | 复制 — %1!：已调度代理程序 %2! 以进行重试。%3!
14153 | 10 | 复制 — %1!：代理程序 %2! 警告。%3!
14154 | 16 | 分发服务器参数必须是 ''@heartbeat_interval''。
14155 | 16 | 为过程脚本生成指定的项目 ID 无效。
14156 | 16 | 在项目定义中未指定自定义存储过程。
14157 | 10 | 订阅服务器 ''%1!'' 创建的对发布 ''%2!'' 的订阅已失效，已除去了该订阅。
14158 | 10 | 复制 — %1!：代理程序 %2!：%3!。
14159 | 16 | 未能更改项目 ''%2!'' 的属性 ''%1!''，因为存在对该项目的订阅。
14199 | 10 | 指定的作业 "%1!" 不是为维护计划而创建的。
14200 | 16 | 指定的 ''%1!'' 无效。
14201 | 10 | 0（所有步骤）..
14202 | 10 | 早于或晚于 @active_start_time
14203 | 10 | sp_helplogins［不包括 Windows NT 组］
14204 | 10 | 0（非闲置），1（正在执行），2（正在等待线程），3（重试间隙），4（闲置），5（挂起），7（正在执行完成操作）
14205 | 10 | （未知）
14206 | 10 | 0..n 秒
14207 | 10 | -1［无最大值］，0..n
14208 | 10 | 1..7［1 = 电子邮件，2 = 寻呼机，4 = NetSend］
14209 | 10 | 0..127［1 = 星期天 ..64 = 星期六］
14210 | 10 | 提示
14211 | 10 | 服务器
14212 | 10 | （所有作业）
14213 | 16 | 核心作业细节：
14214 | 16 | 作业步骤：
14215 | 16 | 作业调度：
14216 | 16 | 作业目标服务器：
14217 | 16 | SQL Server 警告：''%1!'' 对 TSX 服务器 ''%2!'' 执行了强制脱离。请在 MSX 上运行 sp_delete_targetserver 以完成该脱离操作。
14218 | 10 | 小时
14219 | 10 | 分钟
14220 | 10 | 秒
14221 | 16 | 此作业有一个或多个对 ''%1!'' 以外的其他操作员的提示。在当前定义下，无法在远程服务器上将该作业作为目标。
14222 | 16 | 无法重命名操作员 ''%1!''。
14223 | 16 | 当此服务器为 %2! 时，无法修改或删除操作员 ''%1!''。
14224 | 0 | 警告：所给的服务器名称不是当前 MSX 服务器 (''%1!'')。
14225 | 16 | 警告：未能确定本地机器名称。这妨碍了 MSX 操作的发布。
14226 | 0 | 已清除 %1! 条历史条目。
14227 | 0 | 已从 MSX ''%1!'' 脱离了服务器。删除了 %2! 个作业。
14228 | 0 | 服务器 MSX 登记已从 ''%1!'' 更改为 ''%2!''。
14229 | 0 | 服务器已登记到 MSX ''%1!'' 中。
14230 | 0 | SP_POST_MSX_OPERATION：已发布 %1! 条 %2! 下载指令。
14231 | 0 | SP_POST_MSX_OPERATION 警告：指定的 %1!（''%2!''）并未在多服务器作业中涉及。
14232 | 16 | 请指定 job_name、job_id 或 originating_server。
14233 | 16 | 请指定有效的 job_id（或指定 0x00 以表示所有作业）。
14234 | 16 | 指定的 ''%1!'' 无效（有效值由 %2! 返回）。
14235 | 16 | 指定的 ''%1!'' 无效（有效值大于 0 但不包括 %2!）。
14236 | 0 | 警告：%1! 引用了不存在的步骤。
14237 | 16 | 当指定了 ''REASSIGN'' 操作时，必须同时提供 New Login 参数。
14238 | 0 | 已删除 %1! 个作业。
14239 | 0 | 已将 %1! 个作业重新指派给 %2!。
14240 | 0 | 已将作业应用于 %1! 台新服务器。
14241 | 0 | 已从 %1! 台服务器上删除了作业。
14242 | 16 | 只有系统管理员才能重新指派作业的所有权。
14243 | 0 | 已成功启动了作业 ''%1!''。
14244 | 16 | 只有系统管理员才能重新指派任务。
14245 | 16 | 请指定要删除的任务的 @name、@id 或 @loginname。
14246 | 16 | 请指定要更新的任务的 @currentname 或 @id。
14247 | 16 | 只有系统管理员才能查看由其他人所拥有的任务。
14248 | 16 | 此登录是 %1! 个作业的所有者。必须删除或重新指派这些作业后，才能除去该登录。
14249 | 16 | 重新指派任务时，请指定 @taskname 或 @oldloginname。
14250 | 16 | 指定的 %1! 太长。它所包含的字符不能超过 %2! 个。
14251 | 16 | 无法将 ''%1!'' 指定为要提示的操作员。
14252 | 16 | 无法在不属于您的作业上执行此操作。
14253 | 0 | 已成功地停止了 %1! 个作业（共 %2! 个作业）。
14254 | 0 | 已成功地停止了作业 ''%1!''。
14255 | 16 | 此作业的所有者 (''%1!'') 是无效的登录，或者不是数据库 ''%2!'' 的有效用户。
14256 | 16 | 无法启动作业 ''%1!''（ID %2!），因为该作业未定义作业服务器。
14257 | 16 | 无法停止作业 ''%1!''（ID %2!），因为该作业未定义作业服务器。
14258 | 16 | 当 SQLServerAgent 正在启动时，无法执行此操作。请稍后再试。
14259 | 16 | 具有此定义的这一作业的一个调度（ID %1!，''%2!''）已存在。
14260 | 16 | 您没有足够的权限来运行此命令。
14261 | 16 | 指定的 %1!（''%2!''）已存在。
14262 | 16 | 指定的 %1!（''%2!''）不存在。
14263 | 16 | 目标服务器 ''%1!'' 已经是组 ''%2!'' 的成员。
14264 | 16 | 目标服务器 ''%1!'' 不是组 ''%2!'' 的成员。
14265 | 25 | MSSQLServer 服务意外终止。
14266 | 16 | 指定的 ''%1!'' 无效（有效值为：%2!）。
14267 | 16 | 无法将作业添加到作业分类 ''%1!'' 中。
14268 | 16 | 此服务器上没有从服务器 ''%1!'' 上发起的作业。
14269 | 16 | 作业 ''%1!'' 已将服务器 ''%2!'' 作为目标。
14270 | 16 | 作业 ''%1!'' 当前未将服务器 ''%2!'' 作为目标。
14271 | 16 | 不能将目标服务器命名为 ''%1!''。
14272 | 16 | 必须成对地提供对象类型和对象名。
14273 | 16 | 必须提供 @job_id 或 @job_name（以及可选地提供 @schedule_name）或 @schedule_id。
14274 | 16 | 无法添加、更新或删除从 MSX 服务器上发起的作业（或其步骤或调度）。
14275 | 16 | 发起服务器必须是 ''（本地）'' 或 ''%1!''。
14276 | 16 | ''%1!'' 是永久 %2! 分类，无法删除该分类。
14277 | 16 | 命令脚本未将其创建的对象全部破坏。请修订命令脚本。
14278 | 16 | 此作业的调度无效（原因： %1!）。
14279 | 16 | 请提供 @job_name 或 @originating_server。
14280 | 16 | 请提供作业名（及作业特征），或者一个或多个作业筛选参数。
14281 | 0 | 警告：指定 ''DELETE'' 操作时，@new_owner_login_name 参数是不必要的。
14282 | 16 | 请提供日期（创建日期或上次更改日期）和数据比较运算符，或根本不要提供日期参数。
14283 | 16 | 请提供 @target_server_groups 或 @target_servers，或同时提供两者。
14284 | 16 | 无法指定新作业的作业 ID。将由过程来指派 ID。
14285 | 16 | 无法将本地作业添加到多服务器作业分类中。
14286 | 16 | 无法将多服务器作业添加到本地作业分类中。
14287 | 16 | 所提供的 ''%1!'' 的 %2! 无效。
14288 | 16 | %1! 不能在 %2! 之前。
14289 | 16 | %1! 不能包含 ''%2!'' 字符。
14290 | 16 | 此作业当前以本地服务器为目标，所以无法同时以远程服务器为目标。
14291 | 16 | 此作业当前以远程服务器为目标，所以无法同时以本地服务器为目标。
14292 | 16 | 有两个或更多个名为 ''%1!'' 的任务。请指定 %2! 而非 %3! 以唯一地标识任务。
14293 | 16 | 有两个或更多个名为 ''%1!'' 的作业。请指定 %2! 而非 %3! 以唯一地标识作业。
14294 | 16 | 请提供 %1! 或 %2! 来标识作业。
14295 | 16 | 已不再支持频率类型 0x2 (OnDemand)。
14296 | 16 | 此服务器已经登记到了 MSX ''%1!'' 中。
14297 | 16 | 无法登记到本地机器中。
14298 | 16 | 此服务器当前未登记到 MSX 中。
14299 | 16 | 服务器 ''%1!'' 是 MSX。不能将一个 MSX 登记到另一个 MSX 中。
14300 | 16 | 存在循环相关性。无法继续进行相关性评估。
14301 | 16 | 只有 sysadmin 角色的成员才能看到当前用户以外的其它登录。
14302 | 16 | 必须将客户端升级到 6.5 版的 SQL-DMO 和 SQL Server 企业管理器，才能连接到此服务器。升级后的版本将能够管理 SQL Server 6.5 和 6.0（如果运行了 sqlole65.sql）。
14303 | 16 | 存储过程 ''%1!'' 访问注册表键值失败。
14304 | 16 | 存储过程 ''%1!'' 只能在 Windows 2000 服务器上运行。
14410 | 16 | 必须提供 plan_name 或 plan_id。
14411 | 16 | 无法删除此计划。仍有数据库登记在此计划中。
14412 | 16 | 目的数据库已经是日志传送计划的一部分。
14413 | 16 | 此数据库已经处于日志传送状态下。
14414 | 16 | 已经定义了日志传送监视器。
14415 | 16 | 使用 SQL Server 身份验证时，用户名不能为空。
14416 | 16 | 此存储过程必须在 msdb 中运行。
14417 | 16 | 当数据库在参与日志传送时，不能删除监视器服务器。
14418 | 16 | 指定的 @backup_file_name 不是从数据库 ''%1!'' 中创建的。
14419 | 16 | 指定的 @backup_file_name 不是数据库备份。
14420 | 16 | 日志传送源 %1!.%2! 已有 %3! 分钟未备份。
14421 | 16 | 日志传送目的 %1!.%2! 已有 %3! 分钟不同步。
14422 | 16 | 请提供 @plan_id 或 @plan_name。
14423 | 16 | 此计划中已登记了其它数据库，必须将这些数据库删除才能删除计划。
14424 | 16 | 数据库 %1! 已纳入日志传送中。
14425 | 16 | 数据库 %1! 可能尚未纳入日志传送中。
14426 | 16 | 已经定义了日志传送监视器。请调用 sp_define_log_shipping_monitor，其中 @delete_existing = 1。
14427 | 16 | SQL Server 安全性要求有用户名。
14428 | 16 | 无法删除监视器，因为日志传送过程仍然涉及到某些数据库。
14429 | 16 | 仍有一些辅助服务器挂接到了此主服务器。
14430 | 16 | 无效的目标路径 ''%1!''。
14440 | 16 | 未能设置单用户模式。
14441 | 16 | 已成功更改角色。
14442 | 16 | 角色更改失败。
14450 | 16 | 指定的 @backup_file_name 不是从数据库 ''%1!'' 中得到的。
14451 | 16 | 指定的 @backup_file_name 不是数据库备份。
14500 | 16 | 请提供非零的消息 ID、非零的严重度或非空的性能条件。
14501 | 16 | 已经在此条件上定义了警报 (''%1!'')。
14502 | 16 | 将 @enum_type 指定为 ''TARGET'' 时，必须提供 @target_name 参数。
14503 | 16 | 将 @enum_type 指定为 ''ALL'' 或 ''ACTUAL'' 时，不应提供 @target_name 参数。
14504 | 16 | ''%1!'' 是防故障操作员。必须使另一个操作员成为防故障操作员后，才能除去 ''%2!''。
14505 | 16 | 提供性能条件时，请指定空 %1!。
14506 | 16 | 无法在消息 ID %1! 上设置警报。
14507 | 16 | 性能条件的格式必须为：''object_name|counter_name|instance_name|comparator(> or < or =)|numeric value''。
14539 | 16 | 只有 SQL Server 标准版或企业版才能登记到 MSX 中。
14540 | 16 | 只有运行在 Microsoft Windows NT 上的 SQL Server 才能登记到 MSX 中。
14541 | 16 | MSX 的版本 (%1!) 不够新，无法支持此 TSX。在 MSX 上需要有版本 %2! 或更高版本。
14542 | 16 | 多服务器作业的任何 TSQL 步骤中有非空 %1! 值都是无效的。
14543 | 16 | 登录 ''%1!'' 拥有一个或多个多服务器作业。这些作业的所有权只能指派给 %2! 角色的成员。
14544 | 16 | 此作业属于 ''%1!''。只有属于 %2! 角色成员的作业才能是多服务器作业。
14545 | 16 | %1! 参数无效（对于类型为 ''%2!'' 的作业步骤）。
14546 | 16 | 在 Windows 95/98 平台上不支持 %1! 参数。
14547 | 10 | 警告：直到作业的 %1! 用 %2! 发布后，目标服务器才会下载这一更改。
14548 | 10 | 没有指派给目标服务器 ''%1!'' 的作业。
14549 | 10 | （不需要描述。）
14550 | 10 | 命令行子系统
14551 | 10 | 复制快照子系统
14552 | 10 | 复制事务日志读取器子系统
14553 | 10 | 复制分发子系统
14554 | 10 | 复制合并子系统
14555 | 10 | 动态脚本子系统
14556 | 10 | Transact-SQL 子系统
14557 | 10 | ［内部］
14558 | 10 | （加密命令）
14559 | 10 | （追加输出文件）
14560 | 10 | （在历史记录中包含结果）
14561 | 10 | （普通）
14562 | 10 | （成功后退出）
14563 | 10 | （失败后退出）
14564 | 10 | （转到下一步）
14565 | 10 | （转到步骤）
14566 | 10 | （闲置）
14567 | 10 | （低于普通）
14568 | 10 | （高于普通）
14569 | 10 | （时间关键）
14570 | 10 | （作业结果）
14571 | 10 | 没有可用的描述。
14572 | 10 | 对于每日作业，@freq_interval 必须至少为 1。
14573 | 10 | 对于每周作业，@freq_interval 必须是星期位掩码中有效的一天［星期天 = 1 ..星期六 = 64］。
14574 | 10 | 对于每月作业，@freq_interval 必须介于 1 到 31 之间。
14575 | 10 | @freq_relative_interval 必须是第一 (0x1)、第二 (0x2)、第三 [0x4]、第四 (0x8) 或最后 (0x10) 之一。
14576 | 10 | 对于每月相对信息作业，@freq_interval 必须介于 1 到 10（1 = 星期日 ..7 = 星期六，8 = 日，9 = 工作日，10 = 周末）之间。
14577 | 10 | @freq_recurrence_factor 必须至少为 1。
14578 | 10 | 每当 CPU 使用率在低于 %1! %% 的水平上保持了 %2! 秒时就启动。
14579 | 10 | 当 SQLServerAgent 启动时自动启动。
14580 | 10 | 作业
14581 | 10 | 复制事务队列读取器子系统
14585 | 16 | 只有 DTS 包 ''%1!'' 的所有者或 sysadmin 角色的成员才能重新指派该包的所有权。
14586 | 16 | 只有 DTS 包 ''%1!'' 的所有者或 sysadmin 角色的成员才能创建该包的新版本。
14587 | 16 | 只有 DTS 包 ''%1!'' 的所有者或 sysadmin 角色的成员才能除去该包或该包的任何版本。
14588 | 10 | ID.VersionID =
14589 | 10 | ［未指定］
14590 | 16 | DTS 包 ''%1!'' 在此分类中已存在，并且具有另一个 ID。
14591 | 16 | 在指定的父分类中已存在 DTS 分类 ''%1!''。
14592 | 16 | 在多个父分类中发现了 DTS 分类 ''%1!''。必须唯一地指定要除去的分类。
14593 | 16 | DTS 分类 ''%1!'' 包含包和/或其它分类。必须首先除去这些包和/或分类，或者指定递归除去。
14594 | 10 | DTS 包
14595 | 16 | DTS 包 ''%1!'' 存在于不同的分类中。必须唯一地指定包。
14596 | 16 | DTS 包 ''%1!'' 存在于另一个分类中。
14597 | 16 | DTS 包 ID ''%1!'' 已存在并且具有另一个名称。
14598 | 16 | 无法除去"本地"、"知识库"或"本地默认"DTS 分类。
14599 | 10 | Name


错误 15000 -- 15999

 疑难解答

错误 15000 — 15999

错误 | 严重度 | 描述（消息文本）
15001 | 16 | 对象 ''%1!'' 不存在或不是对此操作有效的对象。
15002 | 16 | 不能在事务内部执行过程 ''%1!''。
15003 | 16 | 只有 %1! 角色的成员才能执行此存储过程。
15004 | 16 | 名称不能是 NULL。
15005 | 0 | 已更新了所有表的统计。
15006 | 16 | ''%1!'' 不是有效名称，因为其中包含无效字符。
15007 | 16 | 登录 ''%1!'' 不存在。
15008 | 16 | 当前数据库中不存在用户 ''%1!''。
15009 | 16 | 对象 ''%1!'' 在数据库 ''%2!'' 中不存在。
15010 | 16 | 数据库 ''%1!'' 不存在。请用 sp_helpdb 来显示可用的数据库。
15011 | 16 | 数据库选项 ''%1!'' 不存在。
15012 | 16 | 设备 ''%1!'' 不存在。请用 sp_helpdevice 来显示可用的设备。
15013 | 0 | 表 ''%1!''：未发现没有统计的列。
15014 | 16 | 当前数据库中不存在角色 ''%1!''。
15015 | 16 | 服务器 ''%1!'' 不存在。请用 sp_helpserver 来显示可用的服务器。
15016 | 16 | 默认的 ''%1!'' 不存在。
15017 | 16 | 规则 ''%1!'' 不存在。
15018 | 0 | 表 ''%1!''：为以下各列创建统计：
15019 | 16 | 扩展存储过程 ''%1!'' 不存在。
15020 | 0 | 已为以上各表中 %1! 个列出的列创建了统计。
15021 | 16 | 没有来自远程服务器 ''%1!'' 的远程用户映射到任何本地用户。
15022 | 16 | 指定的用户名已有别名。
15023 | 16 | 当前数据库中已存在用户或角色 ''%1!''。
15024 | 16 | 当前数据库中已存在组 ''%1!''。
15025 | 16 | 登录 ''%1!'' 已存在。
15026 | 16 | 逻辑设备 ''%1!'' 已存在。
15027 | 16 | 没有映射到本地用户 ''%1!'' 的、来自远程服务器 ''%2!'' 的远程用户。
15028 | 16 | 服务器 ''%1!'' 已存在。
15029 | 16 | 当前数据库中已存在数据类型 ''%1!''。
15030 | 16 | 因为数据库处于备用状态，所以无法关闭只读位。
15031 | 0 | ''Virtual_device'' 设备已添加。
15032 | 16 | 数据库"%s"已经存在。
15033 | 16 | ''%1!'' 不是有效的正式语言名称。
15034 | 16 | 应用程序角色密码不能是 NULL。
15035 | 16 | ''%1!'' 不是数据库设备。
15036 | 16 | 数据类型 ''%1!'' 不存在。
15037 | 16 | 物理数据类型 ''%1!'' 不允许为空。
15038 | 16 | 不允许定义基于 timestamp 的用户定义数据类型。
15039 | 16 | syslanguages 中已存在语言 %1!。
15040 | 16 | 用户定义的错误信息 ID 必须大于 50000。
15041 | 16 | 用户定义的错误信息严重度必须介于 1 到 25 之间。
15043 | 16 | 必须指定 ''REPLACE'' 以重写现有的消息。
15044 | 16 | 设备类型 ''%1!'' 未知。请使用 ''disk''、''tape'' 或 ''pipe''。
15045 | 16 | 逻辑名称不能是 NULL。
15046 | 16 | 物理名称不能是 NULL。
15047 | 16 | 对磁带设备只允许使用 ''skip'' 和 ''noskip'' 选项。
15048 | 0 | 数据库兼容级别的有效值为 %1!、%2!、%3! 或 %4!。
15049 | 11 | 无法从 ''%1!'' 解除绑定。请使用 ALTER TABLE DROP CONSTRAINT。
15050 | 11 | 无法绑定默认值 ''%1!''。必须用 CREATE DEFAULT 语句来创建默认值。
15051 | 11 | 无法重命名表，因为该表已为复制而发布。
15052 | 0 | 在 sysdatabases 中更新数据库 ''%1!'' 的条目之前，模式 = %2!，状态 = %3!（状态 suspect_bit = %4!）。
15053 | 16 | 存在不属于数据库所有者的对象。
15054 | 0 | 当前兼容级别为 %1!。
15055 | 11 | 错误。更新 sysdatabases 时返回的 @@error 不等于 0。
15056 | 0 | 没有更新 sysdatabases 中的任何行，因为已正确地重置了模式和状态。没有错误，未进行任何更改。
15057 | 16 | %1! 名称的列表中包含空格，而这是不允许的。
15058 | 16 | %1! 的列表中的名称太少。
15059 | 16 | %1! 的列表中的名称太多。
15060 | 16 | %1! 名称的列表中包含带有非字母字符 ''%2!'' 的名称。
15061 | 16 | 添加设备的请求遭拒绝。名为 ''%1!'' 的物理设备已存在。
15062 | 16 | guest 用户不能映射到登录名。
15063 | 16 | 该登录已经在另一个用户名下拥有帐户。
15064 | 11 | 没有为 PRIMARY KEY 和 UNIQUE KEY 约束分配的空间。
15065 | 16 | 所有的用户 ID 均已指派。
15066 | 16 | 来自远程服务器 ''%1!'' 的远程登录的默认名称映射已存在。
15067 | 16 | %''1!'' 不是本地用户。远程登录遭拒绝。
15068 | 16 | 远程用户 ''%1!''（属于远程服务器 ''%2!''）已存在。
15069 | 16 | 一个或多个用户正在使用该数据库。无法完成所请求的操作。
15070 | 0 | 已成功地将对象 ''%1!'' 标记为重新编译。
15071 | 16 | 用法：sp_addmessage <msgnum>,<severity>,<msgtext> [,<language> [,FALSE | TRUE [,REPLACE]]]
15072 | 16 | 用法：sp_addremotelogin remoteserver [, loginame [,remotename]]
15073 | 0 | 对 sysdatabases 中数据库 ''%1!'' 对应的行，状态位 %2! 已强制关闭，模式已强制为 0。
15074 | 0 | 警告：必须恢复此数据库后才能进行访问。
15075 | 16 | 数据类型 ''%1!'' 是为将来使用而保留的。
15076 | 16 | 默认值、表和用户数据类型必须位于当前数据库中。
15077 | 16 | 规则、表和用户数据类型必须位于当前数据库中。
15078 | 16 | 表或视图必须位于当前数据库中。
15079 | 10 | 已处理的查询数目：%1!。
15081 | 16 | 不能更改 public 角色的成员资格。
15082 | 11 | NULL 不是此过程可接受的参数值。请改为使用百分号。
15083 | 16 | 物理数据类型 ''%1!'' 不接受排序规则
15084 | 16 | 列或用户数据类型必须位于当前数据库中。
15085 | 16 | 用法：sp_addtype name, 'data type' [,'NULL' | 'NOT NULL']
15086 | 16 | 指定的精度无效。精度必须介于 1 到 38 之间。
15087 | 16 | 指定的小数位数无效。小数位数必须小于精度，并且必须是正值。
15088 | 16 | 该物理数据类型的长度是固定的。您不能指定长度。
15089 | 11 | 当其他用户处于数据库中时，无法更改数据库的 ''%1!'' 选项。
15090 | 16 | 已经存在本地服务器。
15091 | 16 | 对于此物理数据类型，必须指定长度。
15092 | 16 | 指定的长度无效。长度必须介于 1 到 8000 字节之间。
15093 | 16 | ''%1!'' 是无效的日期顺序。
15094 | 16 | ''%1!'' 是无效的第一天。
15095 | 16 | 向 syslanguages 的插入失败。未添加语言。
15097 | 16 | 与扩展属性相关的大小不能大于 7500 字节。
15100 | 16 | 用法：sp_bindefault defaultname, objectname [, 'futureonly']
15101 | 16 | 不能为数据类型为 timestamp 的列绑定默认值。
15102 | 16 | 不能为标识列绑定默认值。
15103 | 16 | 不能为创建时具有默认值或更改为具有默认值的列绑定默认值。
15104 | 16 | 您并不拥有名为 ''%1!'' 的、包含列 ''%2!'' 的表。
15105 | 16 | 您并不拥有该名称的数据类型。
15106 | 16 | 用法：sp_bindrule rulename, objectname [, 'futureonly']
15107 | 16 | 不能为数据类型为 text、ntext、image 或 timestamp 的列绑定规则。
15109 | 16 | 无法更改 master 数据库的所有者。
15110 | 16 | 提出的新数据库所有者已经是该数据库中的一个用户。
15111 | 16 | 提出的新数据库所有者已经在该数据库中有了别名。
15112 | 11 | 表选项 ''text in row'' 的第三个参数无效。该参数应为 ''on''、''off''、''0'' 或介于 24 到 7000 之间的数字。
15123 | 16 | 配置选项 ''%1!'' 不存在，也可能是高级选项。
15124 | 16 | 配置选项 ''%1!'' 不唯一。
15125 | 16 | 触发器 ''%1!'' 不是用于 ''%2!'' 的触发器。
15126 | 16 | 没有找到触发器 ''%1!''。
15127 | 16 | 无法将默认语言设置为 syslanguages 中未定义的语言 ID。
15129 | 16 | ''%1!'' 不是配置选项 ''%2!'' 的有效值。
15130 | 16 | 表 ''%1!'' 上已有用于 ''%3!'' 的 ''%2!'' 触发器。
15131 | 16 | 用法：sp_dbremove <dbname> [,dropdev]
15132 | 16 | 不能更改属于别人的默认数据库。
15133 | 16 | INSTEAD OF 触发器 ''%1!'' 不能与顺序相关联。
15134 | 16 | 指定的用户没有别名。
15135 | 16 | 对象无效。不允许在 ''%1!'' 上使用扩展属性，或对象不存在。
15139 | 16 | 该设备是 RAM 盘，无法用作默认设备。
15140 | 16 | 用法：sp_diskdefault logicalname {defaulton | defaultoff}
15142 | 16 | 无法除去角色 ''%1!''。
15143 | 16 | ''%1!'' 不是 @updateusage 参数的有效选项。请输入 ''true'' 或 ''false''。
15144 | 16 | 该角色有成员。角色必须为空白后才能除去。
15174 | 16 | 登录 ''%1!'' 拥有一个或多个数据库。请更改下列数据库的所有者后再除去该登录：
15175 | 16 | 登录 ''%1!'' 在一个或多个数据库中有别名或映射到了用户上。请除去这些用户或别名后再除去该登录。
15176 | 16 | @parameter 的唯一有效值为 ''WITH_LOG''。
15177 | 16 | 用法：sp_dropmessage <msg number> [,<language> | 'ALL']
15178 | 16 | 无法除去 ID 小于 50000 的消息。
15179 | 16 | 消息编号 %1! 不存在。
15180 | 16 | 无法除去。该数据类型正在使用。
15181 | 16 | 无法除去数据库所有者。
15182 | 16 | 无法从 master 或 tempdb 中除去 guest 用户。
15183 | 16 | 该用户拥有数据库中的对象，无法除去该用户。
15184 | 16 | 该用户拥有数据库中的数据类型，无法除去该用户。
15185 | 16 | 没有远程用户 ''%1!'' 映射到本地用户 ''%2!''，并且来自远程服务器 ''%3!''。
15190 | 16 | 仍有服务器 ''%1!'' 的远程登录。
15191 | 16 | 用法：sp_dropserver server [, droplogins]
15193 | 16 | 只能在系统表上使用此过程。
15194 | 16 | 无法在此表上重新创建索引。
15197 | 16 | 没有对象 ''%1!'' 的文本。
15198 | 16 | 提供的名称 (%1!) 不是用户、角色或登录别名。
15200 | 16 | 没有定义远程服务器。
15201 | 16 | 没有远程服务器 ''%1!'' 的远程登录。
15202 | 16 | 没有定义远程登录。
15203 | 16 | 没有 ''%1!'' 的远程登录。
15204 | 16 | 在远程服务器 ''%2!'' 上没有 ''%1!'' 的远程登录。
15205 | 16 | 没有定义服务器。
15206 | 16 | 无效的远程服务器选项：''%1!''。
15210 | 16 | 只有 sysadmin 角色的成员才能使用 loginame 选项。未更改密码。
15211 | 16 | 用户的旧（当前）密码不正确。未更改密码。
15216 | 16 | ''%1!'' 不是 @delfile 参数的有效选项。
15217 | 16 | 无法更新或删除属性。''%2!'' 的属性 ''%1!'' 不存在。
15218 | 16 | 对象 ''%1!'' 不是表。
15220 | 16 | 用法：sp_remoteoption [remoteserver, loginame, remotename, optname, {true | false}]
15221 | 16 | 远程登录选项不存在或不能由用户设置。请不带参数运行 sp_remoteoption 以查看选项。
15222 | 16 | 远程登录选项 ''%1!'' 不唯一。
15223 | 11 | 错误：输入参数 ''%1!'' 不允许为空。
15224 | 11 | 错误：@newname 参数的值包含无效字符或违反了基本限制 (%1!) 。
15225 | 11 | 未能找到名为 ''%1!'' 的项（在当前数据库 ''%2!'' 中，假定输入的 @itemtype 为 ''%3!''）。
15227 | 16 | 无法重命名数据库 ''%1!''。
15228 | 16 | 必须由 sysadmin 角色的成员用 sp_dboption 将数据库 ''%1!'' 设置为单用户模式后，才能重命名该数据库。
15233 | 16 | 无法添加属性。''%2!'' 的属性 ''%1!'' 已存在。
15234 | 16 | 对象存储在 sysprocedures 中，并且没有直接为其分配的空间。
15235 | 16 | 没有为视图分配的空间。
15236 | 16 | 列 ''%1!'' 没有默认值。
15237 | 16 | 用户数据类型 ''%1!'' 没有默认值。
15238 | 16 | 列 ''%1!'' 没有规则。
15239 | 16 | 用户数据类型 ''%1!'' 没有规则。
15241 | 16 | 用法：sp_dboption [dbname [,optname [,'true' | 'false']]]
15242 | 16 | 数据库选项 ''%1!'' 不唯一。
15243 | 16 | 无法更改 master 数据库的 ''%1!'' 选项。
15244 | 16 | 只有 sysadmin 角色的成员或数据库所有者才能设置数据库选项。
15245 | 16 | DBCC DBCONTROL 错误。数据库未置于脱机状态。
15247 | 16 | 用户没有执行此操作的权限。
15248 | 11 | 错误：参数 @oldname 不明确或所声明的 @itemtype (%1!) 错误。
15249 | 11 | 错误：未能识别显式的 @itemtype ''%1!''（%2!）。
15250 | 16 | 对象限定符的数据库名称部分必须是当前数据库的名称。
15251 | 16 | 指定的 ''%1!'' 无效。必须是 %2!。
15252 | 16 | 必须给定主键或外键表名。
15253 | 11 | 分析 SQL 标识符 ''%1!'' 时发现语法错误。
15254 | 16 | 数据库中存在除数据库所有者或 guest 以外的用户。请除去这些用户后再删除数据库。
15255 | 11 | ''%1!'' 不是 @autofix 的有效值。唯一的有效值为 ''auto''。
15256 | 16 | 用法：sp_certify_removable <dbname> [,'auto']
15257 | 16 | 在试图验证数据库时，就不能同时使用该数据库。
15258 | 16 | 该数据库必须由 sysadmin 角色的成员拥有后才能删除。
15261 | 16 | 用法：sp_create_removable <dbname>,<syslogical>,<sysphysical>,<syssize>,<loglogical>,<logphysical>,<logsize>,<datalogical1>,<dataphysical1>,<datasize1> [,<datalogical2>,<dataphysical2>,<datasize2>...<datalogical16>,<dataphysical16>,<datasize16>]
15262 | 0 | 输入的文件大小无效。所有文件都必须至少为 1 MB。
15264 | 16 | 未能创建数据库的 ''%1!'' 部分。
15266 | 16 | 无法使数据库 ''%1!'' 可删除。
15269 | 16 | 未创建逻辑数据设备 ''%1!''。
15270 | 16 | 不能指定基于 sysname 的用户数据类型的长度。
15271 | 16 | @with_log 参数值无效。有效值为 ''true'' 或 ''false''。
15275 | 16 | 没有为 FOREIGN KEY 约束分配的空间。
15277 | 16 | 只有 ''true'' 或 ''false'' 是 @parameter_value 的有效值。
15278 | 16 | 登录 ''%1!'' 已映射到数据库 ''%3!'' 中的用户 ''%2!''。
15279 | 16 | 必须添加此消息的 us_english 版本后，才能添加 ''%1!'' 版本。
15280 | 16 | 除去此消息的所有本地化版本后，才能除去其 us_english 版本。
15283 | 16 | 名称 ''%1!'' 包含的字符太多。
15284 | 16 | 用户已授予或废除了数据库中下列对象的特权，无法除去该用户。
15285 | 16 | 特殊词 ''%1!'' 不能用于逻辑设备名。
15286 | 16 | 将终止此过程。未能识别 @action ''%1!''。请尝试 ''REPORT''、''UPDATE_ONE'' 或 ''AUTO_FIX''。
15287 | 16 | 将终止此过程。对于此过程中的登录名参数，''%1!'' 是禁止使用的值。
15289 | 16 | 将终止此过程。当此过程运行时，不能有打开的事务。
15290 | 16 | 将终止此过程。操作 ''%1!'' 与其它参数值（''%2!''、''%3!''）不兼容。
15291 | 16 | 将终止此过程。缺少 %1! 名称 ''%2!'' 或该名称无效。
15292 | 0 | 将修复用户 ''%1!'' 的行，修复方法是将其登录链接更新为已经存在的登录。
15293 | 0 | 除非出现冲突，否则将通过将登录链接更新为新登录来修复用户 ''%1!'' 的行。请考虑将新密码更改为非空值。
15294 | 0 | 通过添加新登录然后更新用户而修复的孤立用户数目为 %1!。
15295 | 0 | 通过更新用户而修复的孤立用户数目为 %1!。
15298 | 0 | 已创建新登录。
15300 | 11 | 在常规权限类型 (%1!) 的参数值中不包含可识别的字母。下列字母是有效字母：%2!。
15301 | 16 | 只对 Unicode 数据类型支持排序规则 ''%1!''，并且不能在数据库或服务器级别设置该排序规则。
15302 | 11 | 不应使用 Database_Name 来限定进入此过程的参数的 owner.object。
15303 | 11 | "user options" 配置值 (%1!) 遭拒绝，因为该值将设置不兼容的选项。
15304 | 16 | 此消息的 ''%1!'' 版本的严重级别必须与其 us_english 版本的严重级别 (%2!) 相同。
15305 | 16 | @TriggerType 参数值必须是 ''insert''、''update'' 或 ''delete''。
15306 | 16 | 无法更改被复制或被分发数据库的兼容级别。
15307 | 16 | 因为没有为复制而设置服务器，所以未能更改合并发布选项。
15308 | 16 | 必须用 sp_dboption 将数据库 ''%1!'' 设置为单用户模式后，才能修复系统表上的索引。
15311 | 16 | 名为 ''%1!'' 的文件不存在。
15312 | 16 | 名为 ''%1!'' 的文件是主文件，无法删除该文件。
15318 | 0 | 数据库 ''%1!'' 的所有片段（位于设备 ''%2!'' 上）现在都仅专用于日志。
15319 | 17 | 错误：对数据库 ''%1!''（设备 ''%2!''）执行的 DBCC DBREPAIR REMAP 失败。
15321 | 16 | 从 sysaltfiles 中删除 ''%1!'' 时发生了一些问题。
15322 | 0 | 已从 tempdb 中删除了文件 ''%1!''，这一更改将在服务器重新启动后生效。
15323 | 16 | 所选的索引在表 ''%1!'' 上不存在。
15324 | 16 | 无法为数据库 ''%2!'' 更改选项 %1!。
15325 | 16 | 当前数据库不包含名为 ''%2!'' 的 %1!。
15326 | 0 | 不存在扩展存储过程。
15327 | 0 | 数据库现在脱机。
15328 | 0 | 数据库已经脱机。
15330 | 11 | 没有匹配的行以进行报告。
15331 | 11 | 由于有重复的 SID，用户 ''%1!'' 无法进行操作 auto_fix。
15333 | 11 | 错误：合法的 @oldname 引用了数据库 %1!，该数据库不是当前数据库。
15335 | 11 | 错误：@newname 值 ''%1!'' 已用作 %2! 名称，该值将导致重复，而这是不允许的。
15336 | 16 | 无法重命名对象 ''%1!''，因为该对象参与了强制相关性。
15337 | 0 | 注意：sysdepends 表明其它对象（视图、过程等）正在用此对象的旧名称引用此对象。这些对象将成为无效对象，应当除去并立即重新创建。
15338 | 0 | %1! 已重命名为 ''%2!''。
15339 | 0 | 正在创建 ''%1!''。
15340 | 0 | 别名用户已添加。
15341 | 0 | 已向 ''%1!'' 授予数据库访问权。
15354 | 0 | 用法：sp_detach_db <dbname>, [TRUE|FALSE]
15358 | 0 | 应将用户定义的文件组设为只读。
15363 | 16 | 当前数据库中已存在角色 ''%1!''。
15379 | 11 | 未能识别所提供的服务器选项值 ''%1!''。
15394 | 16 | 操作系统不支持排序规则 ''%1!''。
15387 | 11 | 如果合法的对象名指定了数据库，那么该数据库就必须是当前数据库。
15388 | 11 | 当前数据库中没有与输入名称 ''%1!'' 匹配的用户表。
15390 | 11 | 当前数据库中没有与输入名称 ''%1!'' 匹配的用户表或索引视图。
15395 | 11 | 未能找到类型为 ''%1!'' 的项目的旧合法名称。
15398 | 11 | 只有 dbo 所拥有的 master 数据库中的对象才能更改启动设置。
15399 | 11 | 因为该选项 %1! 而无法更改启动选项。此种更改只限于没有参数和列的对象。
15401 | 11 | 没有找到 Windows NT 用户或组 ''%1!''。请再次检查该名称。
15402 | 11 | ''%1!'' 不是固定服务器角色。
15405 | 11 | 不能使用保留的用户或角色名称 ''%1!''。
15407 | 11 | ''%1!'' 不是有效的 Windows NT 名称。请给出完整名称：<域\\用户名>。
15409 | 11 | ''%1!'' 不是角色。
15410 | 11 | 此数据库中不存在用户或角色 ''%1!''。
15412 | 11 | ''%1!'' 不是已知的固定角色。
15413 | 11 | 不能使角色成为其自身的成员。
15414 | 16 | 无法设置兼容性级别，因为数据库有带索引的视图或计算列。这些索引要求与 SQL Server 兼容的数据库。
15415 | 11 | 用户是不止一个组的成员。已为向后兼容性而设置了 sp_changegroup，该存储过程要求最多只有一个组成员资格。
15416 | 16 | 用法：sp_dbcmptlevel [dbname [, compatibilitylevel]]
15417 | 16 | 无法更改数据库 ''%1!'' 的兼容级别。
15418 | 16 | 只有 sysadmin 角色的成员或数据库所有者才能设置数据库兼容级别。
15419 | 16 | 所提供的参数 @sid 应为 binary(16)。
15420 | 16 | 此数据库中不存在组 ''%1!''。
15421 | 16 | 该用户拥有数据库中的角色，无法除去该用户。
15422 | 16 | 只能在特殊级别上激活应用程序角色。
15423 | 0 | 应用程序角色 ''%1!'' 的密码已更改。
15424 | 0 | 新角色已添加。
15425 | 0 | 新应用程序角色已添加。
15426 | 16 | 必须指定具有这一套属性的提供程序名称。
15427 | 16 | 必须指定未知产品 ''%1!'' 的提供程序名称。
15428 | 16 | 不能指定产品 ''%1!'' 的提供程序或任何属性。
15429 | 16 | ''%1!'' 是无效的产品名。
15430 | 19 | 服务器数目超过限制。
15431 | 16 | 必须指定 @rolename 参数。
15432 | 16 | 只能在特殊级别上执行存储过程 ''%1!''。
15433 | 16 | 所提供的参数 @sid 正在使用。
15434 | 16 | 未能除去登录 ''%1!''，因为该用户当前正处于登录状态。
15435 | 0 | 已成功地发布了数据库。
15436 | 0 | 已成功地使数据库可以订阅。
15437 | 0 | 已成功地用合并复制发布了数据库。
15438 | 0 | 数据库已经联机。
15439 | 0 | 数据库现在联机。
15440 | 0 | 已不再发布数据库。
15441 | 0 | 数据库已不再可以订阅。
15442 | 0 | 数据库已不再可以合并发布。
15443 | 0 | 对更改过的数据库进行检查点操作。
15444 | 0 | ''硬盘'' 设备已添加。
15445 | 0 | ''软盘'' 设备已添加。
15446 | 0 | ''磁带'' 设备已添加。
15447 | 0 | ''管道'' 设备已添加。
15449 | 0 | 类型已添加。
15450 | 0 | 新语言已插入。
15452 | 0 | 没有可用的备用语言。
15453 | 0 | us_english 始终可用，即便在 syslanguages 中不存在该语言。
15454 | 0 | 语言已删除。
15456 | 0 | 有效的配置选项为：
15457 | 0 | 已将配置选项 ''%1!'' 从 %2! 改为 %3!。请运行 RECONFIGURE 语句以安装。
15458 | 0 | 数据库已删除。
15459 | 0 | 在当前数据库中，指定的对象引用了：
15460 | 0 | 在当前数据库中，下列对象引用了指定的对象：
15461 | 0 | 对象未引用任何其它对象，其它对象也未引用该对象。
15462 | 0 | 文件 ''%1!'' 已关闭。
15463 | 0 | 设备已除去。
15467 | 0 | 类型已除去。
15469 | 0 | 没有为此对象定义任何约束。
15470 | 0 | 没有外键引用此表。
15471 | 0 | 对象备注已加密。
15472 | 0 | 对象没有任何索引。
15473 | 0 | 可设置的远程登录选项。
15475 | 0 | 数据库已重命名并置于单用户模式下。
15476 | 0 | 必须由 sysadmin 角色的成员用 sp_dboption 将数据库重置为多用户模式。
15477 | 0 | 注意：更改对象名的任一部分都可能破坏脚本和存储过程。
15478 | 0 | 密码已更改。
15479 | 0 | 登录已除去。
15480 | 0 | 未能向 ''%1!'' 授予登录访问权。
15481 | 0 | 已向 ''%1!'' 授予登录访问权。
15482 | 0 | 未能拒绝对 ''%1!'' 的登录访问权。
15483 | 0 | 已拒绝对 ''%1!'' 的登录访问权。
15484 | 0 | 未能废除 ''%1!'' 的登录访问权。
15485 | 0 | 已废除 ''%1!'' 的登录访问权。
15486 | 0 | 默认数据库已更改。
15487 | 0 | %1! 的默认语言已改为 %2!。
15488 | 0 | ''%1!'' 已添加到角色 ''%2!'' 中。
15489 | 0 | ''%1!'' 已从角色 ''%2!'' 中除去。
15490 | 0 | 相关别名也已除去。
15491 | 0 | 用户已从当前数据库中除去。
15492 | 0 | 别名用户已除去。
15493 | 0 | 角色已除去。
15494 | 0 | 应用程序角色 ''%1!'' 现在处于活动状态。
15495 | 0 | 应用程序角色已除去。
15496 | 0 | 组已更改。
15497 | 0 | 未能用 sp_addlogin（用户 = %1!）添加登录。将终止此过程。
15498 | 17 | 在 txn_1a_ 内的更新失败。将回滚 (1a1)。
15499 | 0 | 相关别名已映射到新数据库所有者。
15500 | 0 | 相关别名已除去。
15501 | 0 | 数据库所有者已更改。
15502 | 0 | 将数据库所有者设置为 SA。
15503 | 0 | 将所有对象的所有权交给数据库所有者。
15504 | 0 | 从 sysusers 中删除 guest 和数据库所有者之外的用户。
15505 | 16 | 无法更改对象 ''%1!'' 或其所属的某个子对象的所有者，因为新所有者 ''%2!'' 已有同名的对象。
15511 | 0 | 已将默认值绑定到列。
15512 | 0 | 已将默认值绑定到数据类型。
15513 | 0 | 已将新默认值绑定到指定用户数据类型的列上。
15514 | 0 | 已将规则绑定到表的列上。
15515 | 0 | 已将规则绑定到数据类型。
15516 | 0 | 已将新规则绑定到指定用户数据类型的列上。
15519 | 0 | 已从表的列上解除了默认值的绑定。
15520 | 0 | 已从数据类型上解除了默认值的绑定。
15521 | 0 | 已从指定用户数据类型的列上解除了默认值的绑定。
15522 | 0 | 已从表的列上解除了规则的绑定。
15523 | 0 | 已从数据类型上解除了规则的绑定。
15524 | 0 | 已从指定用户数据类型的列上解除了规则的绑定。
15525 | 0 | sp_checknames 用于搜索非 7 位 ASCII 字符。
15526 | 0 | 在系统表的若干重要列中。下列
15527 | 0 | 列属于搜索范围：
15528 | 0 | 在 master 中：
15536 | 0 | 在所有数据库中：
15543 | 0 | 在数据库 ''%1!'' 的系统表中查找非 7 位 ASCII 字符。
15544 | 0 | Table.column ''%1!''
15545 | 0 | 下列数据库名称包含非 7 位 ASCII 字符。
15546 | 0 | 如果要更改这些名称，请使用 ''%1!''。
15547 | 0 | 下列登录的默认数据库名称包含
15548 | 0 | 非 7 位 ASCII 字符。如果要更改这些名称，请使用
15549 | 0 | sp_defaultdb。
15550 | 0 | 下列服务器的 ''初始化文件'' 包含
15551 | 0 | 非 7 位 ASCII 字符。如果要更改这些名称，
15552 | 0 | 请使用 UPDATE。
15553 | 0 | 数据库 ''%1!'' 没有对象、用户等。
15554 | 0 | 名称包含非 7 位 ASCII 字符。
15555 | 0 | 执行此存储过程时，所提供的数据库名称 ''%1!'' 必须是当前数据库。
15564 | 0 | 下列设备名包含非 7 位 ASCII 字符。
15565 | 0 | 下列登录名包含非 7 位 ASCII 字符。
15566 | 0 | 下列远程登录名包含非 7 位 ASCII 字符。
15567 | 0 | 下列服务器名称包含非 7 位 ASCII 字符。
15568 | 0 | 下列参数名和列名包含非 7 位 ASCII 字符。
15569 | 0 | 下列索引名包含非 7 位 ASCII 字符。
15570 | 0 | 下列对象名包含非 7 位 ASCII 字符。
15571 | 0 | 下列段名包含非 7 位 ASCII 字符。
15572 | 0 | 下列数据类型名称包含非 7 位 ASCII 字符。
15573 | 0 | 下列用户名或角色名包含非 7 位 ASCII 字符。
15574 | 10 | 此对象没有任何统计。
15575 | 10 | 此对象没有任何统计或索引。
15576 | 16 | 不能在服务器 ''%1!'' 上设置网络名称，因为该服务器不是链接 SQL Server。
15600 | 15 | 为过程 ''%1!'' 指定的参数或选项无效。
15601 | 16 | 没有为当前数据库启用全文检索。请用 sp_fulltext_database 来启用全文检索。
15604 | 16 | 无法除去全文目录 ''%1!''，因为该目录包含全文索引。
15605 | 16 | 已经为表 ''%1!'' 创建了全文索引。
15606 | 16 | 必须首先在表 ''%1!'' 上创建全文索引。
15607 | 16 | ''%1!'' 不是可用于强制全文检索键的有效索引。必须指定唯一的、不可为空的、单列的索引。
15608 | 16 | 已为表 ''%1!'' 激活了全文检索。
15609 | 16 | 无法为表 ''%1!'' 激活全文检索，因为尚未为全文检索而启用任何一列。
15610 | 16 | 必须停用表 ''%1!'' 上的全文检索后，才能在全文索引中添加或删除列。
15611 | 16 | 列 ''%1!''（属于表 ''%2!''）无法用于全文检索，因为该列不是基于字符的列。
15612 | 16 | DBCC DBCONTROL 错误。未将数据库设为只读。
15613 | 0 | 数据库现在处于只读状态。
15614 | 0 | 数据库已经处于只读状态。
15615 | 16 | DBCC DBCONTROL 错误。未将数据库设为单用户模式。
15616 | 0 | 数据库现在处于单用户模式。
15617 | 0 | 数据库已经处于单用户模式。
15618 | 0 | 数据库现在处于读/写状态。
15619 | 0 | 数据库已经处于读/写状态。
15620 | 0 | 数据库现在处于多用户模式。
15621 | 0 | 数据库已经处于多用户模式。
15622 | 10 | 没有访问数据库 ''%1!'' 的权限。
15623 | 10 | 为数据库 ''%2!'' 启用 %1! 选项。
15624 | 10 | 为数据库 ''%2!'' 禁用 %1! 选项。
15625 | 10 | 未能识别 ''%2!'' 参数的 ''%1!'' 选项。
15626 | 10 | 您试图在没有活动事务时获取事务性应用程序锁。
15627 | 10 | sp_dboption 命令失败。
15630 | 16 | 必须在表 ''%1!'' 上激活全文检索才能执行此操作。
15631 | 16 | 当前已为表 ''%1!'' 启用了全文更改跟踪。
15632 | 16 | 必须在表 ''%1!'' 上启动全文更改跟踪之后，才能启动全文自动传播。
15633 | 16 | 当前已为表 ''%1!'' 启用了全文自动传播。
15634 | 16 | 必须在表 ''%1!'' 上启动全文更改跟踪之后，才能刷新更改。
15635 | 16 | 无法执行 ''%1!''，因为数据库处于只读访问模式下。
15636 | 16 | 无法填充全文目录 ''%1!''，因为数据库处于单用户访问模式下。
15637 | 16 | 无法为表 ''%1!'' 填充全文索引，因为数据库处于单用户访问模式下。
15638 | 10 | 警告：无法为表 ''%1!'' 填充全文索引，因为数据库处于单用户访问模式下。已停止对此表的更改跟踪。用 sp_fulltext_table 启动更改跟踪。
15639 | 10 | 警告：表 ''%1!'' 未启用 ''text in row'' 选项，并且具有建立了全文索引的列，这些列的类型为 image、text 或 ntext。全文更改跟踪无法跟踪在这些列上进行的任何 WRITETEXT 或 UPDATETEXT 操作。
15640 | 16 | 必须在表 %1! 上执行 sp_fulltext_table ''start_full''。上次索引完全填充之后，曾添加或除去了影响索引的列。
15642 | 16 | 为确保索引最新，正在进行的填充是必要的。如需要，请停止更改跟踪，然后停用全文索引填充。
15643 | 10 | 警告：此操作在一个或多个表上未成功。可能有非活动的表，或者全文索引填充已处于活动状态。
15644 | 16 | 在此表上启动全文索引填充失败。执行 sp_fulltext_table %1!、%2! 以更新索引。
15645 | 16 | 列 ''%1!'' 不存在。
15646 | 16 | 列 ''%1!'' 不是计算列。
15647 | 10 | 不存在引用此表的架构绑定的视图。


错误 16000 -- 16999

 疑难解答

错误 16000 — 16999

错误 | 严重度 | 描述（消息文本）
16801 | 11 | sp_dropwebtask 要求至少定义参数 @outputfile 或 @procname 两者之一。
16802 | 11 | sp_dropwebtask 无法找到指定的任务。
16803 | 11 | sp_runwebtask 要求至少定义参数 @outputfile 或 @procname 两者之一。
16804 | 11 | SQL Web 助手：未能建立与 SQL Server 的本地连接。
16805 | 11 | SQL Web 助手：未能执行 SQL 语句。
16806 | 11 | SQL Web 助手：未能将参数绑定到 SQL 语句。
16807 | 11 | SQL Web 助手：未能获得绑定令牌。
16808 | 11 | SQL Web 助手：未能找到现有的触发器。这可能是由于加密。
16809 | 11 | SQL Web 助手调用 SQLGetData 时失败。
16810 | 11 | SQL Web 助手调用 SQLFetch 时失败。
16811 | 11 | SQL Web 助手绑定结果列时失败。
16812 | 11 | SQL Web 助手：必须指定 @query 参数。
16813 | 11 | SQL Web 助手：既可以按名称，也可以按位置来传递参数。
16814 | 11 | SQL Web 助手：参数无效。
16815 | 11 | SQL Web 助手：@procname 无效。
16816 | 11 | SQL Web 助手：@outputfile 无效。
16817 | 11 | SQL Web 助手：未能读取给定的文件。
16820 | 11 | SQL Web 助手失败，因为 msdb..MSwebtasks 中 Web 任务的状态无效。
16821 | 11 | SQL Web 助手：未能打开输出文件。
16822 | 11 | SQL Web 助手：未能打开模板文件。
16823 | 11 | SQL Web 助手：未能分配足够的内存以满足此请求。
16824 | 11 | SQL Web 助手：Web 任务中指定的模板文件大小有误。
16825 | 11 | SQL Web 助手：未能读取模板文件。
16826 | 11 | SQL Web 助手：未能在模板文件中找到用于数据插入的指定标记。
16827 | 11 | SQL Web 助手：未能写入输出文件。
16828 | 11 | SQL Web 助手：@tabborder 必须是 tinyint。
16829 | 11 | SQL Web 助手：@singlerow 必须是 0 或 1。不能同时指定此参数和 @nrowsperpage。
16830 | 11 | SQL Web 助手：@blobfmt 参数说明无效。
16831 | 11 | SQL Web 助手：对 @blobfmt 参数中指定的每一列，输出文件名都是强制的。
16832 | 11 | SQL Web 助手：调用过程时参数太多。
16833 | 11 | SQL Web 助手：@nrowsperpage 必须是正数，并且不能同时指定此参数和 @singlerow。
16834 | 11 | SQL Web 助手：对 text、ntext 或 image 列的读/写操作失败。
16838 | 11 | SQL Web 助手：未能在 HTML 文件中找到表。
16839 | 11 | SQL Web 助手：未能在 HTML 文件中找到匹配的表结尾标记。
16841 | 11 | SQL Web 助手：对于给定的 @whentype 值，不能指定 @datachg 参数。
16842 | 11 | SQL Web 助手：未能找到并除去更新 Web 页的必要触发器。
16843 | 11 | SQL Web 助手：未能为 @datachg 参数添加必要的触发器。可能在表上已有触发器，并且该触发器缺少或加密了文本。
16844 | 11 | SQL Web 助手：@datachg 参数的语法错误。
16845 | 11 | SQL Web 助手：对于给定的 @whentype 选项，必须指定 @datachg。
16846 | 11 | SQL Web 助手：对于给定的 @whentype 选项，必须指定 @unittype 和/或 @numunits。
16847 | 11 | SQL Web 助手：@fixedfont 必须是 0 或 1。
16848 | 11 | SQL Web 助手：@bold 必须是 0 或 1。
16849 | 11 | SQL Web 助手：@italic 必须是 0 或 1。
16850 | 11 | SQL Web 助手：@colheaders 必须是 0 或 1。
16851 | 11 | SQL Web 助手：@lastupdated 必须是 0 或 1。
16852 | 11 | SQL Web 助手：@HTMLheader 必须介于 1 到 6 之间。
16853 | 11 | SQL Web 助手：@username 无效。
16854 | 11 | SQL Web 助手：@dbname 无效。
16855 | 11 | SQL Web 助手：@HTMLheader 必须介于 1 到 9 之间。
16856 | 11 | SQL Web 助手：@HTMLheader 必须介于 1 到 4 之间。
16857 | 11 | SQL Web 助手：@targetdate 无效。该参数必须是 1900-01-01 之后的有效日期。
16858 | 11 | SQL Web 助手：@targettime 参数必须介于 0 到 240000 之间。
16859 | 11 | SQL Web 助手：@dayflags 必须是 1, 2, 4, 8, 16, 32 或 64。
16860 | 11 | SQL Web 助手：@numunits 必须大于 0。
16861 | 11 | SQL Web 助手：对于给定的 @whentype 选项，必须指定 @targetdate。
16862 | 11 | SQL Web 助手：对于给定的 @whentype 选项，必须指定 @dayflags。
16863 | 11 | SQL Web 助手：URL 说明无效。
16864 | 11 | SQL Web 助手：@blobfmt 无效。该文件必须包括指向 output_file 位置的完整路径。
16865 | 11 | SQL Web 助手：URL 超级链接文本列不能是 image 数据类型。
16866 | 11 | SQL Web 助手：未能获得 @query 中的列数目。
16867 | 11 | SQL Web 助手：@query 中缺少 URL 超级链接文本列。
16868 | 11 | SQL Web 助手调用 SQLColAttribute 时失败。
16869 | 11 | SQL Web 助手：数据类型为 image 的列不能有模板。
16870 | 11 | SQL Web 助手：内部错误。未能读取 @ 参数。
16871 | 11 | SQL Web 助手：@charset 无效。执行 sp_enumcodepages 可得到字符集列表。
16873 | 11 | SQL Web 助手：@codepage 无效。执行 sp_enumcodepages 可得到代码页列表。
16874 | 11 | SQL Web 助手：内部错误。无法转换为指定的代码页。
16875 | 11 | SQL Web 助手：在此系统上不能转换为所需的代码页。
16876 | 11 | SQL Web 助手：内部错误。未能获得 COM 接口 ID。
16877 | 11 | SQL Web 助手：内部错误。未能获得 COM 语言 ID。
16878 | 11 | SQL Web 助手：内部错误。未能初始化 COM 库。
16879 | 11 | SQL Web 助手：内部错误。未能从 Unicode 转换为指定的代码页。
16880 | 11 | SQL Web 助手：内部错误。未能创建转换对象。请确保 MLang.dll 文件位于系统目录中。
16881 | 16 | SQL Web 助手：在 Windows 3.1 的 Win32s 上不支持此版本。
16882 | 16 | SQL Web 助手：没有找到 Web 任务。请验证任务名称是否有错误。
16883 | 16 | SQL Web 助手：未能列出 Web 任务参数。xp_readwebtask 要求 @procname。
16884 | 16 | SQL Web 助手：转换 Web 任务需要过程名。
16885 | 16 | SQL Web 助手：未能将 Web 任务升级为 8.0。该 Web 任务将保留为 6.5 格式，并将需要重新创建。
16886 | 16 | SQL Web 助手：未能更新 Web 任务系统表。该 Web 任务将保留为 6.5 格式。
16887 | 16 | SQL Web 助手：缺少 @procname 参数。将 Web 任务升级到 8.0 需要该参数。
16888 | 16 | SQL Web 助手：系统不支持源代码页。请确保 @charset 和 @codepage 语言文件已安装到系统中。
16889 | 16 | SQL Web 助手：未能将 Web 任务行发送到客户端。
16890 | 16 | SQL Web 助手：发生 ODS 错误。未能发送 Web 任务参数。
16901 | 16 | %hs：此功能尚未实现。
16902 | 16 | %hs：参数 %hs 的值无效。
16903 | 16 | 调用 %1! 过程时参数数目不正确。
16904 | 16 | sp_cursor：optype：只能随 DELETE 或 UPDATE 一同指定 ABSOLUTE。
16905 | 16 | 游标已打开。
16907 | 16 | 不允许在游标语句中使用 %1!，
16909 | 16 | %hs：所提供的游标标识符值 (%2!) 无效。
16911 | 16 | %hs：提取类型 %2! 不能用于只进游标。
16914 | 16 | 调用 %1! 过程时参数太多。
16915 | 16 | 名为 ''%1!'' 的游标已存在。
16916 | 16 | 名为 ''%1!'' 的游标不存在。
16917 | 16 | 游标未打开。
16922 | 16 | 游标提取：不允许从数据类型 %1! 到 %2! 的隐性转换。
16924 | 16 | Cursorfetch：在 INTO 列表中声明的变量数目必须与所选择的列数目匹配。
16925 | 16 | 提取类型 %1! 不能用于动态游标。
16926 | 16 | sp_cursoroption：列 ID (%1!) 并未对应于 text、ntext 或 image 列。
16927 | 16 | 无法提取到 text、ntext 和 image 变量中。
16929 | 16 | 游标是 READ ONLY 的。
16930 | 16 | 所请求的行不在提取缓冲区内。
16931 | 16 | 当前提取缓冲区内没有行。
16932 | 16 | 游标有 FOR UPDATE 列表，而请求更新的列并不在此列表中。
16933 | 16 | 游标不包括正在修改的表，或该表不能通过该游标更新。
16934 | 16 | 乐观并发检查失败。已在此游标之外修改了该行。
16935 | 16 | 没有为 sp_cursor-%1! 语句指定参数值。
16936 | 16 | sp_cursor：一个或多个值参数无效。
16937 | 16 | 不允许对具有不止一条 SELECT 语句的远程存储过程或存储过程使用服务器游标。请使用默认结果集或客户端游标。
16938 | 16 | sp_cursoropen/sp_cursorprepare：语句参数只能是单个 SELECT 语句或单个存储过程。
16940 | 16 | 使用 READ ONLY 或 INSENSITIVE 游标时不能指定 UPDLOCK 或 TABLOCKX。
16941 | 16 | 在用 NOLOCK 选项打开的表上，不允许进行游标更新。
16942 | 16 | 未能生成异步键集。游标已释放。
16943 | 16 | 未能完成游标操作，因为在声明游标后，表架构有更改。
16944 | 16 | 在游标中的只读表上，不能指定 UPDLOCK 或 TABLOCKX。
16945 | 16 | 游标未声明。
16946 | 16 | 未能打开游标，因为该游标的一个或多个表已不在作用域内。
16947 | 10 | 未更新或删除任何行。
16948 | 16 | 变量 ''%1!'' 不是游标变量，但该变量却用于应使用游标变量的位置。
16949 | 16 | 变量 ''%1!'' 是游标变量，但该变量却用于不应使用游标变量的位置。
16950 | 10 | 当前没有为变量 ''%1!'' 分配游标。
16951 | 16 | 变量 ''%1!'' 不能用作参数，因为在执行过程前，不能为 CURSOR OUTPUT 参数分配游标。
16952 | 16 | 游标变量不能用作远程过程调用的参数。
16953 | 10 | 远程表不可更新。远程表上的可更新键集驱动游标要求事务具有扫过游标的 REPEATABLE_READ 或 SERIALIZABLE 隔离级别。
16954 | 16 | 直接执行 SQL；无游标。
16955 | 16 | 未能创建可接受的游标。
16956 | 10 | 所创建的游标不是所请求的类型。
16957 | 16 | 在 READ ONLY 游标上不能指定 FOR UPDATE。
16958 | 16 | 未能完成游标操作，因为在声明游标后，所设置的选项有更改。
16959 | 16 | 唯一表计算失败。
16960 | 16 | 已达到所允许的最大游标数目。
16961 | 10 | 一个或多个 FOR UPDATE 列已调整到它们的表在查询中的第一个实例。
16962 | 16 | 目标对象类型不是可通过游标更新的。
16963 | 16 | 不能在包含远程表的游标上指定滚动锁定。
16995 | 16 | %hs 要求设置 NO_BROWSETABLE 选项。
16996 | 16 | %1! 无法得到输出参数。
16998 | 20 | 内部游标错误：游标工作表操作失败。
16999 | 20 | 内部游标错误：游标处于无效状态。


错误 17000 -- 17999

 疑难解答

错误 17000 — 17999

错误 | 严重度 | 描述（消息文本）
17000 | 10 | 用法：sp_autostats <table_name> [, {ON|OFF} [, <index_name>] ]
17050 | 10 | 在此 SQL Server 版本中忽略 ''%1!'' 选项。
17550 | 10 | DBCC TRACEON %1!，服务器进程 ID (SPID) %2!。
17551 | 10 | DBCC TRACEOFF %1!，服务器进程 ID (SPID) %2!。
17557 | 16 | DBCC DBRECOVER 失败，数据库 ID %1!。
17558 | 10 | *** 回避数据库 ID %1! 的恢复。
17560 | 10 | DBCC DBREPAIR：'%ls' 索引（用于 ''%2!.%3!''）已还原。
17561 | 10 | %1! 索引（用于 %2!.%3!）已还原。
17569 | 16 | DBCC 无法找到库初始化函数 %1!。
17570 | 16 | DBCC 无法找到函数 %1!（在库 %2! 中）。
17571 | 20 | DBCC 函数 %1!（属于库 %2!）产生违规访问。SQL Server 将终止进程 %5!。
17572 | 16 | DBCC 无法释放 DLL %1!。SQL Server 依赖于此 DLL 才能正常工作。
17750 | 16 | 无法装载 DLL %1! 或该 DLL 所引用的某一 DLL。原因：%ls。
17751 | 16 | 无法在库 %2! 中找到函数 %1!。原因：%ls。
17752 | 16 | 为 ''%1!'' 进行的扩展过程内存分配失败。
17753 | 16 | %1! 只能在 master 数据库中执行。


错误 18000 -- 18999

 疑难解答

错误 18000 — 18999

错误 | 严重度 | 描述（消息文本）
18002 | 20 | 存储函数 ''%1!''（属于库 ''%3!''）产生违规访问。SQL Server 将终止进程 %5!。
18100 | 10 | 进程 ID %1! 被主机名 %2!，主机进程 ID %4! 取消。
18450 | 14 | 用户 ''%1!'' 登录失败。原因：未定义为信任 SQL Server 连接的有效用户。
18451 | 14 | 用户 ''%1!'' 登录失败。目前只有管理员才能连接。
18452 | 14 | 用户 ''%1!'' 登录失败。原因：未与信任 SQL Server 连接相关联。
18453 | 14 | 用户 ''%1!'' 登录成功。连接：信任。
18454 | 14 | 用户 ''%1!'' 登录成功。连接：非信任。
18455 | 14 | 用户 ''%1!'' 登录成功。
18456 | 14 | 用户 ''%1!'' 登录失败。
18457 | 14 | 用户 ''%1!'' 登录失败。原因：用户名包含映射字符或字符数超过 30 个。
18458 | 14 | 登录失败。已超过为此服务器提供 %1! 份许可证的最大同时连接用户数。应通过 Windows NT 控制面板中的"许可协议"应用程序获得并注册更多的许可证。
18459 | 14 | 登录失败。已超过访问 SQL Server 的工作站许可最大限制。
18460 | 14 | 登录失败。已超过为此 ''%2!'' 服务器提供的 %1! 份许可证的最大同时连接用户数。应获得并安装更多的许可证，或者升级为完整版。
18461 | 14 | 用户 ''%1!'' 登录失败。原因：服务器处于单用户模式下。目前只有一位管理员能够连接。
18482 | 16 | 未能连接到服务器 ''%1!''，因为 ''%2!'' 未定义为远程服务器。
18483 | 16 | 未能连接到服务器 ''%1!''，因为 ''%2!'' 未在该服务器上定义为远程登录。
18485 | 16 | 未能连接到服务器 ''%1!''，因为没有为远程访问而配置该服务器。
18666 | 17 | 未能在 rel_desclosed() 系统函数中释放描述符。
18750 | 16 | %ls：参数 ''%2!'' 无效。
18751 | 16 | 调用 %1! 过程时参数数目不正确。
18752 | 16 | 其它日志读取器正在复制数据库。
18754 | 16 | 未能打开表 %1!。
18755 | 16 | 未能为复制分配内存。
18756 | 16 | 未能得到表 %1! 的复制信息。
18757 | 16 | 数据库未发布。
18759 | 16 | 复制失败。文件 ''%1!''，第 %2! 行。
18760 | 16 | %1! 语句（用于项目 %2!）无效。
18761 | 16 | 位于 (%1!) 的提交记录已分发。请检查 DBTABLE。
18762 | 16 | 开始 LSN (%1!) 无效，该 LSN 属于提交记录 (%2!)。请检查 DBTABLE。
18763 | 16 | 提交记录 (%1!) 报告最早的活动 LSN 为 (0:0:0)。
18764 | 16 | 筛选存储过程 %1! 执行失败。有关更多信息，请参见 SQL Server 错误日志。
18765 | 16 | 为复制日志扫描指定的开始 LSN 无效。
18766 | 16 | DBTABLE 中的 replbeginlsn 字段无效。
18767 | 16 | 为复制日志扫描指定的开始 LSN (%1!) 出现在 replbeginlsn (%2!) 之前。
18768 | 16 | 为 repldone 日志扫描指定的 LSN (%1!) 出现在当前日志 (%2!) 中的复制开始之前。
18769 | 16 | 为 repldone 日志扫描指定的 LSN (%1!) 不是已复制的提交记录。
18770 | 16 | 为 repldone 日志扫描指定的 LSN (%1!) 在事务日志中不存在。
18771 | 16 | 写入类型为 %2! 的变量时指定的存储类型 %1! 无效。
18772 | 16 | 在查找复制类型时指定的服务器数据类型 (%1!) 无效。
18773 | 16 | 在命令构造过程中，未能找到列 %1! 的文本信息记录。
18774 | 16 | 存储过程 sp_replsetoriginator 必须在事务内部执行。
18775 | 16 | 日志读取器代理程序在处理 DML 操作时，遇到了类型为 %1! 的意外日志记录。
18776 | 16 | 当等待项目高速缓存访问事件时出错。
18777 | 16 | %1!：初始化 MSMQ 组件时出错
18778 | 16 | %1!：打开 Microsoft 消息队列 %2! 时出错


错误 19000 -- 19999

 疑难解答

错误 19000 — 19999

Microsoft® SQL Server™ 2000 目前在范围 19000 到 19999 没有系统错误信息。


错误 20000 -- 20999

 疑难解答

错误 20000 — 20999

错误 | 严重度 | 描述（消息文本）
20001 | 0 | 项目 ''%1!''（属于发布 ''%2!''）没有别名。
20002 | 0 | 筛选 ''%1!'' 已存在，该筛选用于项目 ''%2!''（属于发布 ''%3!''）。
20003 | 0 | 无法为 ''%1!'' 生成别名。
20007 | 16 | 未能成功地除去用于合并复制的系统表。
20008 | 16 | 未能成功地创建用于合并复制的系统表。
20009 | 16 | 未能将项目 ''%1!'' 添加到发布 ''%2!'' 中。
20010 | 16 | 未能除去对应于发布 ''%1!'' 的快照代理程序。
20011 | 16 | 无法设置不兼容的发布属性。发布的 ''allow_anonymous'' 属性依赖于 ''immediate_sync'' 属性。
20012 | 16 | 订阅类型 ''%1!'' 不允许用于发布 ''%2!''。
20013 | 16 | 当存在对发布的订阅时，无法更改发布属性 ''%1!''。
20014 | 16 | @schema_option 值无效。
20015 | 16 | 未能删除目录 ''%1!''。请检查 xp_cmdshell 的安全上下文，并关闭其它可能正在访问该目录的进程。
20016 | 16 | @subscription_type 值无效。有效值为 ''pull'' 或 ''anonymous''。
20017 | 16 | 订阅服务器上的订阅不存在。
20018 | 16 | @optional_command_line 太长。请使用代理程序定义文件。
20019 | 16 | 无法设置复制数据库选项 ''%1!''，除非数据库为发布数据库或分发数据库。
20020 | 16 | 所提供的项目冲突解决程序无效或不存在。
20021 | 16 | 未能找到订阅。
20023 | 16 | @subscriber_type 值无效。有效选项为 ''local''、''global''、''anonymous'' 或 '''repub''。
20025 | 16 | 发布名称必须唯一。指定的发布名称 ''%1!'' 已被使用。
20026 | 16 | 发布 ''%1!'' 不存在。
20027 | 16 | 项目 ''%1!'' 不存在。
20028 | 16 | 分发服务器未正确安装。未能使数据库可以发布。
20029 | 16 | 分发服务器未正确安装。未能使数据库不可发布。
20030 | 16 | 项目 ''%1!'' 已存在于另一个发布中，并且具有另一个列跟踪选项。
20031 | 16 | 未能删除行，因为该行不存在。
20032 | 16 | ''%1!'' 未定义为 ''%2!'' 的订阅服务器。
20033 | 16 | 发布类型无效。
20034 | 16 | 发布 ''%1!'' 不支持 ''%2!'' 订阅。
20036 | 16 | 分发服务器未正确安装。
20037 | 16 | 项目 ''%1!'' 已存在于另一个发布中，并且具有另一个项目冲突解决程序。
20038 | 16 | 未能将项目筛选添加到项目 ''%1!''（属于发布 ''%2!''）中。
20039 | 16 | 未能将项目筛选从项目 ''%1!''（属于发布 ''%2!''）中除去。
20040 | 16 | 未能从发布 ''%1!'' 中除去项目。
20041 | 16 | 事务已回滚。未能执行触发器。请重新尝试该事务。
20043 | 16 | 未能更改项目 ''%1!''，因为发布已激活。
20044 | 16 | 该 priority 属性对本地订阅服务器无效。
20045 | 16 | 必须提供项目名。
20046 | 16 | 项目不存在。
20047 | 16 | 您无权执行此操作。
20049 | 16 | 优先级值应大于 100.0。
20050 | 16 | 保持期必须大于或等于 %1!。
20051 | 16 | 该订阅服务器未注册。
20054 | 16 | 没有使当前数据库可以发布。
20055 | 16 | 无法为合并复制而发布表 ''%1!''，因为该表有 timestamp 列。
20056 | 16 | 无法重新发布表 ''%1!''。
20057 | 16 | 指定的代理程序类型的配置文件名 ''%1!'' 已存在。
20058 | 16 | @agent_type 必须是 1（快照），2（日志读取器），3（分发）或 4（合并）
20059 | 16 | @profile_type 必须是 0（系统）或 1（自定义）
20060 | 16 | 兼容级别不能小于 60。
20061 | 16 | 此数据库的兼容级别必须设置为 70 或更高，才能使之可以合并复制。
20062 | 16 | 不允许更新具有 rowguidcol 属性的列。
20064 | 16 | 无法除去配置文件。该配置文件可能未定义，或被定义为默认配置文件。
20065 | 16 | 无法除去配置文件，因为该配置文件正在使用。
20066 | 16 | 配置文件未定义。
20067 | 16 | 对于指定的配置文件，参数名 ''%1!'' 已存在。
20068 | 16 | 无法在表 ''%1!'' 上创建项目，因为该表中的列多于 %2! 个。
20069 | 16 | 无法验证使用了循环联接筛选的合并项目。
20070 | 16 | 无法更新订阅行。
20072 | 16 | 无法更新订户信息行。
20073 | 16 | 只能在发布服务器上添加或更改项目。
20074 | 16 | 只有表对象才能为合并复制而发布为"表"项目。
20075 | 16 | ''status'' 参数值必须是 ''active'' 或 ''unsynced''。
20076 | 16 | @sync_mode 参数值必须是 ''native'' 或 ''character''。
20077 | 16 | 生成复本别名时遇到问题。
20078 | 16 | @property 参数值必须是 ''sync_type''、''priority'' 或 ''description''。
20079 | 16 | @subscription_type 参数值无效。有效选项为 ''push''、''pull'' 或 ''both''。
20081 | 16 | 发布属性 ''%1!'' 不能为 NULL。
20084 | 16 | 发布 ''%1!'' 不能由订阅服务器数据库 ''%2!'' 订阅。
20086 | 16 | 发布 ''%1!'' 不支持 nosync 类型，因为该发布中包含没有 rowguidcol 列的表。
20087 | 16 | 不能强制匿名订阅。
20088 | 16 | 只能指派大于或等于 0 并且小于 100 的优先级。
20089 | 16 | 未能正确获取许可证信息。
20090 | 16 | 未能正确地得到版本信息。
20091 | 16 | sp_mergesubscription_cleanup 用于清除强制订阅。请用 sp_dropmergepullsubscription 来清除请求订阅或匿名订阅。
20100 | 16 | 无法除去订户 ''%1!''。存在该订户的订阅。
20500 | 16 | 在 sysobjects 中不存在可更新的订阅服务器存储过程 ''%1!''。
20501 | 16 | 未能用 sp_articlecolumn 向 sysarticleupdates 中插入。
20502 | 16 | ''%1!'' 值无效。有效值为 ''read only''、''sync tran''、''queued tran'' 或 ''failover''。
20503 | 16 | ''%2!'' 中的 ''%1!'' 值无效。没有为可更新订阅 ''%3!'' 启用发布。
20505 | 16 | 未能除去 ''%2!'' 中的同步更新存储过程 ''%1!''。
20506 | 16 | 源表 ''%1!'' 在 ''%2!'' 中未找到。
20507 | 16 | 表 ''%1!'' 在 ''%2!'' 中未找到。
20508 | 16 | 可更新订阅：在订阅服务器上插入的 text/ntext/image 值将为 NULL。
20509 | 16 | 可更新订阅：无法在订阅服务器上更新 text/ntext/image 值。
20510 | 16 | 可更新订阅：无法更新标识列。
20511 | 16 | 可更新订阅：无法更新 timestamp 列。
20512 | 16 | 可更新订阅：正在回滚事务。
20515 | 16 | 可更新订阅：行在发布服务器和订阅服务器之间不匹配。请运行分发代理程序以刷新订阅服务器上的行。
20516 | 16 | 可更新订阅：已复制数据不可更新。
20517 | 16 | 可更新订阅：不允许对复本的主键进行更新，除非已发布的表有 timestamp 列。
20518 | 16 | 可更新订阅：不支持 INSERT 和 DELETE 操作，除非已发布的表有 timestamp 列。
20519 | 16 | 可更新订阅：不允许在具有标识列和 timestamp 列的表上进行 INSERT 操作，除非在订阅服务器上定义了主键。
20520 | 16 | 可更新订阅：不允许在具有标识列和 timestamp 列的表上进行 UPDATE 操作，除非在订阅服务器上定义了主键。
20521 | 16 | sp_MSmark_proc_norepl：必须是 db_owner 或 sysadmin 角色的成员。
20522 | 16 | sp_MSmark_proc_norepl：对象名 ''%1!'' 无效。
20523 | 16 | 未能验证项目 ''%1!''。该项目未激活。
20524 | 10 | 表 ''%1!'' 可能已不同步。行数（实际：%2!，预期：%3!）。所用行数计算方法为 %4!（0 = 完整，1 = 快速）。
20525 | 10 | 表 ''%1!'' 可能已不同步。行数（实际：%2!，预期： %3!）。校验值（实际：%4!，预期：%5!）。
20526 | 10 | 表 ''%1!'' 通过了行数（%2!）验证。所用行数计算方法为 %3!（0 = 完整，1 = 快速）。
20527 | 10 | 表 ''%1!'' 通过了行数（%2!）和校验值验证。（注意：没有为任何 text 和 image 列的比较校验值）。
20528 | 10 | 日志读取器代理程序启动消息。
20529 | 10 | 启动代理程序。
20530 | 10 | 运行代理程序。
20531 | 10 | 检测日志未记录的代理程序关闭。
20532 | 10 | 复制代理程序调度。
20533 | 10 | 复制代理程序检查
20534 | 10 | 检测没有动态地将历史信息记录到日志中的复制代理程序。
20535 | 10 | 从分发数据库中删除复制代理程序历史记录。
20536 | 10 | 复制：代理程序失败
20537 | 10 | 复制：代理程序重试
20538 | 10 | 复制：失效订阅已除去
20540 | 10 | 复制：代理程序成功
20541 | 10 | 从分发数据库中删除复制的事务。
20542 | 10 | 检测并删除已发布数据库中的失效订阅。
20543 | 10 | @rowcount_only 参数值必须是 0、1 或 2。0 表示 7.0 兼容的校验值。1 表示只校验行数。2 表示版本 8.0 中新引入的校验值功能。
20545 | 10 | 默认代理程序配置文件。
20546 | 10 | 详细历史记录代理程序配置文件。
20547 | 10 | 用于详细历史记录日志的代理程序配置文件。
20548 | 10 | 慢速连接代理程序配置文件。
20549 | 10 | 用于低带宽连接的代理程序配置文件。
20550 | 10 | Windows 同步管理器配置文件。
20551 | 10 | Windows 同步管理器所用的配置文件。
20552 | 10 | 未能清除分发事务表。
20553 | 10 | 未能清除分发历史记录表。
20554 | 10 | 代理程序处于置疑状态。在最近 %1! 分钟内没有响应。
20555 | 10 | 6.x 发布。
20556 | 10 | 检测到了所有正在运行的复制代理程序的心跳信号。
20557 | 10 | 代理程序关闭。更多信息请参见作业 ''%1!'' 的 SQL Server 代理程序作业历史记录。
20558 | 10 | 表 ''%1!'' 在快速检查失败后，通过了完整行数验证。DBCC UPDATEUSAGE 将自动启动。
20559 | 10 | 请求了条件快速行数方法但未指定预期行数。将使用快速方法。
20560 | 10 | 传递了预期校验值，但由于只请求了行数检查，所以将不比较校验值。
20561 | 10 | 已生成 %1! 的预期行数值（用于 %2!）。
20562 | 10 | 用户删除。
20563 | 10 | 不再属于此部分。
20564 | 10 | 系统删除。
20565 | 10 | 复制：订阅服务器数据验证失败
20566 | 10 | 复制：订阅服务器已通过数据验证
20567 | 10 | 代理程序历史记录清除：%1!
20568 | 10 | 分发清除：%1!
20569 | 10 | 失效订阅清除
20570 | 10 | 重新初始化存在数据验证失败的订阅
20571 | 10 | 重新初始化所有存在数据验证失败的订阅。
20572 | 10 | 已在验证失败后重新初始化了订阅服务器 ''%1!'' 上对项目 ''%2!''（属于发布 ''%3!''）的订阅。
20573 | 10 | 复制：验证失败后重新初始化了订阅
20574 | 10 | 订阅服务器 ''%1!'' 上对项目 ''%2!''（属于发布 ''%3!''）的订阅的数据验证失败。
20575 | 10 | 订阅服务器 ''%1!'' 上对项目 ''%2!''（属于发布 ''%3!''）的订阅已通过数据验证。
20576 | 10 | 已在同步失败后重新初始化了订阅服务器 ''%1!'' 上对项目 ''%2!''（属于发布 ''%3!''）的订阅。
20577 | 10 | 在 msdb..sysreplicationalerts 中没有找到任何条目。
20578 | 10 | 复制：代理程序自定义关闭
20579 | 10 | 已生成 %1! 的预期行数值和 %2! 的预期校验值（用于 %3!）。
20580 | 10 | 未检测到某些复制代理程序的心跳信号。已将这些代理程序的状态更改为"失败"。
20581 | 10 | 无法除去服务器 ''%1!''，因为该服务器用作复制过程中的分发服务器。
20582 | 10 | 无法除去服务器 ''%1!''，因为该服务器用作复制过程中的发布服务器。
20583 | 10 | 无法除去服务器 ''%1!''，因为该服务器用作复制过程中的订阅服务器。
20584 | 10 | 无法除去服务器 ''%1!''，因为该服务器用作复制过程中对远程发布服务器 ''%2!'' 进行订阅的订阅服务器。
20585 | 16 | 验证失败。对象 ''%1!'' 不存在。
20586 | 16 | （默认目标）
20587 | 16 | 对存储过程 ''%2!'' 而言 ''%1!'' 值无效。
20588 | 16 | 未初始化订阅。请首先运行分发代理程序。
20589 | 10 | 用于重复排队事务读取器的代理程序配置文件。
20590 | 16 | 项目属性 ''status'' 不能包括第 64 位 ''dts horizontal partitions''，因为该发布不允许数据转换。
20591 | 16 | 只有 ''dts horizontal partitions'' 和 ''no dts horizontal partitions'' 是有效的 ''status'' 值，因为该发布允许数据转换。
20592 | 16 | ''dts horizontal partitions'' 和 ''no dts horizontal partitions'' 不是有效的 ''status'' 值，因为该发布不允许数据转换。
20593 | 16 | 无法修改发布 ''%1!''。不能将 sync_method 更改为 ''native''、''concurrent'' 或 ''concurrent_c''，因为存在 ODBC 或 OLE DB 订阅服务器对该发布的订阅。
20594 | 16 | 存在对该发布的强制订阅。请用 sp_subscription_cleanup 来除去已失效的强制订阅。
20595 | 16 | 跳过用信号通知的错误。
20596 | 16 | 只有 ''%1!'' 或 db_owner 的成员才能除去匿名代理程序。
20597 | 10 | 已除去 %1 个匿名订阅。
20598 | 16 | 应用复制的命令时在订阅服务器上没有找到该行。
20599 | 16 | 遇到数据一致性错误时继续。
20600 | 10 | 用于跳过数据一致性错误的代理程序配置文件。它只能由 SQL Server 订阅服务器使用。
20601 | 10 | 为代理程序参数 ''SkipErrors'' 指定的值无效。
20602 | 10 | 为代理程序参数 ''SkipErrors'' 指定的值太长。
20603 | 10 | 异类订阅服务器无法使用代理程序配置文件。
20604 | 10 | 您没有运行用于强制订阅的代理程序的权限。请确保已指定了代理程序参数 ''SubscriptionType''。
20605 | 10 | 已使现有的发布快照无效。请重新运行快照代理程序以生成新的快照。
20606 | 10 | 已重新初始化订阅。
20607 | 10 | 无法进行更改，因为已生成了快照。请将 @force_invalidate_snapshot 设置为 1 以强制进行更改并使现有的快照无效。
20608 | 10 | 无法进行更改，因为存在活动订阅。请将 @force_reinit_subscription 设置为 1 以强制进行更改并重新初始化活动订阅。
20609 | 16 | 无法附加订阅文件 ''%1!''。请确保该文件是有效的订阅复本文件。
20610 | 16 | 当日志读取器代理程序正在复制数据库时，无法运行 ''%1!''。
20611 | 16 | 在允许 DTS 的发布中仅允许表或对表项目的索引视图。
20612 | 16 | 不支持校验值验证，因为发布允许 DTS。请使用行数验证。
20613 | 16 | 不支持验证为 DTS 水平分区设置的项目。
20614 | 16 | 不支持对异类订阅服务器进行验证。
20616 | 10 | 高卷标服务器对服务器的配置文件
20617 | 10 | 合并代理程序配置文件已为高卷标服务器对服务器的同步方案而优化。
20618 | 16 | 若要附加订阅数据库，您必须有 CREATE DATABASE 权限。
20619 | 16 | 服务器用户 ''%1!'' 不是数据库 ''%2!'' 中的有效用户。请先向该数据库中添加用户帐户或 ''guest'' 用户帐户。
20620 | 11 | 指定的安全模式要求 sysservers 中有服务器 ''%1!''。请用 sp_addlinkedserver 添加该服务器。
20621 | 11 | 无法将订阅数据库复制到现有数据库中。


错误 21000 -- 21999

 疑难解答

错误 21000 — 21999

错误 | 严重度 | 描述（消息文本）
21000 | 16 | 无法订阅不活动的发布。
21001 | 16 | 无法在订阅服务器上为强制订阅添加分发代理。
21002 | 16 | 用于此订阅的分发代理已存在 (%1!) 。
21003 | 16 | 已不再支持更改发布名。
21004 | 16 | 无法发布数据库对象 ''%1!''，因为该对象已加密。
21005 | 10 | 为了向后兼容性，sp_addpublisher 可用于添加分发发布者。然而，sp_adddistpublisher 更为灵活。
21006 | 16 | 无法使用 sp_addpublisher 添加发布者。请使用 sp_adddistpublisher。
21007 | 16 | 目前无法添加远程分发服务器。请确保已在分发服务器上将本地服务器配置为发布者。
21008 | 16 | 无法卸载分发服务器，因为已定义了订阅服务器。
21009 | 16 | 指定的筛选过程已与表相关联。
21010 | 16 | 已删除 %1! 个重复事务（由 %2! 条语句组成），花费 %3! 秒（%4! 行/秒）。
21011 | 16 | 已停用订阅。
21012 | 16 | 无法将发布的 ''allow_push'' 属性更改为 false。存在对该发布的强制订阅。
21013 | 16 | 无法将发布的 ''allow_pull'' 属性更改为 false。存在对该发布的请求订阅。
21014 | 16 | @optname 参数值必须是 ''transactional'' 或 ''merge''。
21015 | 16 | 复制选项 ''%1!'' 已设置为 TRUE。
21016 | 16 | 复制选项 ''%1!'' 已设置为 FALSE。
21017 | 16 | 在具有垂直或水平分区的合并项目上，无法执行 SQL Server 7.0 兼容的校验值操作。可以在此项目上执行行数验证和 SQL Server 2000 兼容的二进制校验值操作。
21018 | 16 | 分发数据库中的连续快照事务太多。请再次运行日志读取器代理程序，或清除分发数据库。
21021 | 16 | 请在卸载复制前除去分发服务器。
21022 | 16 | 无法设置不兼容的发布属性。发布的 ''immediate_sync'' 属性依赖于发布的 ''independent agent'' 属性。
21023 | 16 | 已不再支持 ''%1!''。
21024 | 16 | 已经以不兼容的类型发布了存储过程 ''%1!''。
21025 | 16 | 要加密的字符串不能有空字符。
21026 | 16 | 无法对没有独立代理程序的发布进行匿名订阅。
21027 | 16 | 未安装 ''%1!'' 复制存储过程。请用 sp_replicationoption 来安装这些存储过程。
21028 | 16 | 此服务器上未安装复制组件。请再次运行 SQL Server 安装程序，然后选择安装复制组件的选项。
21029 | 16 | 除非 @drop_push 为 ''true''，否则无法在订阅服务器上除去强制订阅条目。
21030 | 16 | 不能更改 SQL Server 复制代理程序的名称。
21031 | 16 | 对于存储过程项目，不支持 ''post_script''。
21032 | 16 | 由于非 SQL Server 订阅服务器 ''%1!'' 不支持 ''sync tran'' 更新模式，所以未能订阅。
21033 | 16 | 无法除去作为分发发布者的服务器 ''%1!''，因为在该服务器上有用于复制的数据库。
21034 | 16 | 在订阅服务器上插入或更新的行不能处于项目分区之外。
21035 | 16 | 已更新了发布服务器属性 ''%1!''。
21036 | 16 | 用于订阅的另一个 %1! 代理程序正在运行。
21037 | 16 | 工作目录 ''%1!'' 无效。
21038 | 16 | 服务器不支持 Windows 身份验证。
21039 | 16 | 对于可以有异类订阅服务器的发布，不支持目的所有者名称。请用本机模式的 bcp 来实现此功能。
21040 | 16 | 发布 ''%1!'' 不存在。
21041 | 16 | 此服务器上不允许使用远程分发发布者。
21042 | 16 | 对于在 Windows NT 4.0 上运行的分发服务器，分发发布者属性 ''distributor_password'' 无用，并且不支持该属性。
21043 | 16 | 分发服务器未安装。
21044 | 16 | 当使数据库可以发布或合并发布时，不能忽略远程分发服务器（@ignore_remote_distributor 不能为 1）。
21045 | 16 | 无法卸载分发服务器，因为存在可用于发布或合并发布的数据库。
21046 | 16 | 无法更改分发发布者属性 ''distribution_db''，因为远程发布服务器正在使用当前分发数据库。
21047 | 16 | 无法除去本地分发发布者，因为已定义了订户。
21048 | 16 | 无法将登录 ''%1!'' 添加到发布访问列表中，因为该登录没有对分发服务器 ''%2!'' 的访问权。
21049 | 16 | 登录 ''%1!'' 没有对发布 ''%2!'' 的访问权限，因为该登录不在发布访问列表中。
21050 | 16 | 只有 sysadmin 或 db_owner 角色的成员才能执行此操作。
21051 | 16 | 由于非 SQL Server 订阅服务器 ''%1!'' 不支持自定义存储过程，所以未能订阅。
21052 | 16 | 排队更新订阅：写入消息队列失败。
21053 | 16 | 参数必须为以下之一：''description''、''status''、''retention''、''sync_mode''、''allow_push''、''allow_pull''、''allow_anonymous''、''enabled_for_internet''、''centralized_conflicts''、''conflict_retention'' 或 ''snapshot_ready''。
21054 | 16 | 可更新订阅服务器：对发布服务器的 RPC 失败。
21055 | 15 | 指定的参数 %1! 无效（用于 %2!）。
21056 | 16 | 对发布 ''%1!'' 的订阅已失效并且不存在。
21057 | 16 | 匿名订户不能拥有可更新订阅。
21058 | 16 | 对发布 ''%1!'' 的可更新订阅（位于订阅服务器 ''%2!'' 上）已存在。
21059 | 16 | 无法重新初始化非 immediate_sync 发布的订阅。
21060 | 16 | 由于非 SQL Server 订阅服务器 ''%1!'' 不支持参数化语句，所以未能订阅。
21061 | 16 | 指定的项目状态 %1! 无效，该状态是在添加项目 ''%2!'' 时指定的。
21062 | 16 | 表 ''%1!'' 的行大小超过了 6000 字节的复制限制。
21063 | 16 | 表 ''%1!'' 已为合并复制而发布，所以无法参与可更新订阅。
21064 | 16 | 由于该订阅已标记为要重新初始化，所以不能用于即时更新。请在重新初始化完成后重试。
21070 | 16 | 此订阅不支持自动重新初始化（订阅时使用了 ''no sync'' 选项）。若要重新初始化此订阅，就必须除去并重新创建该订阅。
21071 | 10 | 无法重新初始化对发布 ''%4!'' 的订阅 ''%2!：%3!'' 中的项目 ''%1!''（订阅该项目时使用了 ''no sync'' 选项）。
21072 | 16 | 没有在最大保持期内同步订阅，或该订阅已在发布服务器上除去。必须重新初始化订阅才能接收数据。
21073 | 16 | 指定的发布不存在。
21074 | 16 | 该订阅已标记为不活动，必须在发布服务器上重新初始化该订阅。请与数据库管理员联系。
21075 | 10 | 发布 ''%1!'' 的初始快照尚不可用。
21076 | 10 | 项目 ''%1!'' 的初始快照尚不可用。
21077 | 10 | 已停用匿名发布的初始快照。新订阅必须等待下一次调度的快照。
21078 | 16 | 在订阅服务器数据库中不存在表 ''%1!''。
21079 | 16 | 发布服务器的 RPC 安全信息缺少或无效。请用 sp_link_publication 指定该信息。
21080 | 16 | ''msrepl_tran_version'' 列必须位于项目的垂直分区中，并且该项目必须可用于可更新的订阅；不能除去该列。
21081 | 16 | 服务器设置 ' 允许激发会激发其它触发器（嵌套触发器）的触发器''必须存在于可更新的订阅服务器上。
21082 | 16 | 在允许可更新订阅的订阅服务器上，订阅数据库的数据库属性 IsRecursiveTriggersEnabled 必须为 false。
21083 | 16 | 在即时更新订阅服务器上，数据库兼容级别不能小于 70。
21084 | 16 | 发布 ''%1!'' 不允许匿名订阅。
21085 | 16 | 该保持期必须小于分发数据库的保持期。
21086 | 16 | 分发数据库的保持期必须大于任何现有的非合并发布的保持期。
21087 | 16 | 不允许匿名订户或此服务器上的订户创建合并发布。
21088 | 10 | 发布的初始快照尚不可用。
21107 | 16 | ''%1!'' 不是表或视图。
21108 | 16 | 此版本的 SQL Server 不支持事务发布。
21109 | 16 | 如果指定了 @command_id，那么参数 @xact_seqno_start 和 @xact_seqno_end 就必须相同。
21110 | 16 | 如果指定了 @command_id，就必须指定 @xact_seqno_start 和 @publisher_database_id。
21111 | 16 | ''%1!'' 不是快照代理程序的有效参数。
21112 | 16 | ''%1!'' 不是日志读取器代理程序的有效参数。
21113 | 16 | ''%1!'' 不是分发代理程序的有效参数。
21114 | 16 | ''%1!'' 不是合并代理程序的有效参数。
21115 | 16 | ''%1!'' 不是 ''%2!'' 参数的有效值。该值必须是正整数。
21116 | 16 | ''%1!'' 不是 ''%2!'' 参数的有效值。此值必须为 1、2 或 3。
21117 | 16 | ''%1!'' 不是 ''%2!'' 参数的有效值。此值必须为 0、1 或 2。
21118 | 16 | ''%1!'' 不是 ''%2!'' 参数的有效值。该值必须大于或等于 0 并且小于或等于 10,000。
21119 | 16 | ''%1!'' 不是 ''%2!'' 参数的有效值。该值必须是非负整数。
21120 | 16 | 只有 sysadmin 固定服务器角色和 db_owner 固定数据库角色的成员才能除去对发布 ''%2!'' 的订阅 ''%1!''。
21121 | 16 | 只有 sysadmin 固定服务器角色和 ''%1!'' 才能除去对发布 ''%2!'' 的请求订阅。
21122 | 16 | 无法除去分发数据库 ''%1!''，因为该数据库正在使用。
21123 | 16 | 未能在分发服务器上找到代理程序配置文件 ''%1!''。
21124 | 16 | 在 sysmergearticles 中无法找到对应于选择性表 ID（别名）''%1!'' 的表名和表所有者。
21125 | 16 | 合并复制中所用的表必须至少有一个非计算列。
21126 | 16 | 不能在发布所在的数据库中创建请求订阅。
21127 | 16 | 只有全局合并订阅可添加到数据库 ''%1!'' 中。
21128 | 16 | 将终止即时更新或排队更新 INSERT 触发器，因为该触发器不是第一个激发的触发器。请使用 sp_settriggerorder 过程将触发器 ''%1!'' 的激发顺序设置为第一个。
21129 | 16 | 将终止即时更新或排队更新 UPDATE 触发器，因为该触发器不是第一个激发的触发器。请使用 sp_settriggerorder 过程将触发器 ''%1!'' 的激发顺序设置为第一个。
21130 | 16 | 将终止即时更新或排队更新 DELETE 触发器，因为该触发器不是第一个激发的触发器。请使用 sp_settriggerorder 过程将触发器 ''%1!'' 的激发顺序设置为第一个。
21131 | 16 | 存在对异类发布 ''%1!'' 的订阅。若要添加新项目，必须首先除去对该发布的现有订阅。
21132 | 16 | 无法创建对合并发布 ''%1!'' 的事务订阅。对于此操作，发布类型应或者是事务性的 (0)，或者是快照的 (1)。
21133 | 16 | 尚未使发布 ''%1!'' 能够使用独立代理程序。
21134 | 16 | 指定的作业 ID 必须标识分发代理程序或合并代理程序作业。
21135 | 16 | 在复制代理程序表中检测到不一致性。指定的作业 ID 并未对应于 ''%1!'' 中的某一条目。
21136 | 16 | 在复制代理程序表中检测到不一致性。指定的作业 ID 对应于 ''%1!'' 中的多个条目。
21137 | 16 | 此过程只支持强制订阅代理程序的远程执行。
21138 | 16 | ''offload_server'' 属性不能与分发服务器的名称相同。
21139 | 16 | 未能为分布式代理程序执行确定订阅服务器名称。
21140 | 16 | 代理程序的执行不能分布到与分发服务器驻留在同一服务器上的订阅服务器上。
21141 | 16 | 不应为具有手工筛选或视图的项目指定 @change_active 标志。
21142 | 16 | SQL Server ''%1!'' 未能获取登录 ''%2!'' 的 Windows 组成员资格信息。请验证 Windows 帐户对该登录的域具有访问权。
21143 | 16 | 对于快照发布项目，自定义存储过程架构选项无效。
21144 | 16 | 无法订阅 sync_type 为 ''dump database'' 的发布，因为订阅服务器当前订阅了其它发布。
21145 | 16 | 无法订阅发布 %1!，因为订阅服务器已订阅了 sync_type 为 ''dump database'' 的发布。
21146 | 16 | 当 @alt_snapshot_folder 既不为 NULL 也不为空白时，@use_ftp 不能是 ''true''。
21147 | 16 | ''%1!'' 数据库没有为合并复制而发布。
21148 | 16 | 要么同时为 @subscriber 和 @subscriberdb 指定非空值，要么两者都不指定。
21149 | 16 | ''%1!'' 数据库没有为事务复制或快照复制而发布。
21150 | 16 | 无法为指定的订阅确定快照文件夹，因为指定的订阅服务器对分发服务器而言是未知的。
21151 | 16 | 对要用字符模式 bcp 作为同步方法来支持非 SQL Server 订阅服务器的发布，不支持快照前及快照后命令。
21152 | 16 | 对使用 ''concurrent'' 或 ''concurrent_c'' 同步方法的发布，无法创建 sync_type 为 ''none'' 的订阅。
21153 | 16 | 无法创建项目 ''%1!''。作为并发同步发布中一部分的所有项目都必须使用存储过程来将更改应用到订阅服务器中。
21154 | 16 | 无法更改项目 ''%1!''。作为并发同步发布中一部分的所有项目都必须使用存储过程来将更改应用到订阅服务器中。
21156 | 16 | @status 参数值必须是 ''initiated'' 或 ''active''。
21157 | 16 | 只能对定义了备用快照生成文件夹的发布才能启用快照压缩选项。
21158 | 16 | 对于要启用 Internet 功能的发布，''ftp_address'' 属性不能为空。
21159 | 16 | 如果发布启用了 Internet 功能，''alt_snapshot_folder'' 属性就必须不是空白的。
21160 | 16 | @ftp_port 参数不能是 NULL。
21161 | 16 | 未能更改发布服务器，因为已除去了订阅。请用 sp_subscription_cleanup 来清除触发器。
21162 | 16 | 从分区中排除表的 rowguid 列是无效的。
21163 | 16 | 不可能将列 ''%1!'' 添加到项目 ''%2!'' 中，因为已运行了发布 ''%3!'' 的快照。
21164 | 16 | 列 ''%1!'' 不能包括在垂直分区内，因为该列既不可为空，也没有定义默认值。
21165 | 16 | 列 ''%1!'' 不能从垂直分区内排除，因为该列既不可为空，也没有定义默认值。
21166 | 16 | 列 ''%1!'' 不存在。
21167 | 16 | 指定的作业 ID 不代表此数据库中任何强制订阅的 %1! 代理程序作业。
21168 | 16 | 只有 sysadmin 固定服务器角色的成员、db_owner 固定数据库角色的成员和由指定复制代理程序作业提供服务的订阅的所有者才能修改代理程序卸载设置。
21169 | 16 | 未能在分发服务器 ''%2!'' 上标识发布服务器 ''%1!''。请确保 ''%3!'' 已在分发服务器的 sysservers 表中注册。
21170 | 16 | 只有 SQL Server 2000 或 OLE DB 订阅服务器才能使用 DTS。
21171 | 16 | 在服务器 ''%2!'' 上的 msdb 中未能找到包 ''%1!''。
21172 | 16 | 发布必须处于 ''character'' 或 ''concurrent_c'' bcp 模式下才能允许使用 DTS。
21173 | 16 | 发布必须是 ''independent_agent type'' 才能允许使用 DTS。
21174 | 16 | 必须使用 @ins_cmd、@upd_cmd、@del_cmd 的默认值，并且 @status 只能是 16 或 80，因为该发布允许使用 DTS。
21175 | 16 | 无法更改 ins_cmd、upd_cmd 或 del_cmd 项目的属性，因为该发布允许使用 DTS 或排队更新选项。
21176 | 16 | 只有 sysadmin 固定服务器角色的成员、db_owner 固定数据库角色的成员或订阅的创建者才能更改订阅属性。
21177 | 16 | 未能创建列的列表，因为该列表太长。请手动创建该列表。
21178 | 16 | 无法设置 DTS 属性，因为该发布不允许数据转换。
21179 | 16 | @dts_package_location 参数值无效。有效选项为 ''distributor'' 或 ''subscriber''。
21180 | 16 | 允许使用 DTS 的发布不能用于可更新的订阅。
21181 | 16 | 只能为强制订阅设置 @dts_package_name。
21182 | 16 | @agent_type 参数必须是 ''distribution''、''merge'' 或 NULL 之一。
21183 | 16 | 属性名称 ''%1!'' 无效。
21184 | 16 | %1! 参数不正确：应为 ''%2!''、''%3!'' 或 ''%4!''。
21185 | 16 | 订阅未初始化或没有为故障转移模式操作而创建。
21186 | 16 | 对发布服务器 ''%1!'' 的订阅没有有效的 queue_id。
21187 | 16 | 当前模式与所请求的模式相同。
21188 | 10 | 将更新模式从 [%1!] 更改为 [%2!]。
21189 | 16 | 此订阅的队列 (queue_id = ''%1!'') 不是空白的。请运行队列读取器代理程序以确保队列为空，然后将模式从 [queued] 设置为 [immediate]。
21190 | 10 | 将队列设置检查从 [%1!] 替代为 [%2!]。
21191 | 16 | @ins_cmd、@upd_cmd 和 @del_cmd 的值只能分别是 [%1!]、[%2!] 和 [%3!]，因为发布允许使用排队事务。
21192 | 16 | MSrepl_tran_version 列是用于复制的预定义列，其数据类型只能为 uniqueidentifier
21193 | 16 | 当 @auto_identity_support 设置为 TRUE 时，@identity_range、@pub_identity_range 或 @threshold 不能为 NULL。
21194 | 16 | 无法支持 identity_range_control，因为此表没有标识列。
21195 | 16 | 没有可用的有效标识范围。请检查标识列的数据类型。
21196 | 16 | 标识验证失败。
21197 | 16 | 分配新标识范围失败。
21198 | 16 | 架构复制失败。
21199 | 16 | 只有再次运行快照后，此更改才能生效。
21200 | 16 | 发布 ''%1!'' 不存在。
21201 | 16 | 不允许除去正在由合并筛选子句使用的列。
21202 | 16 | 不可能将列 ''%1!'' 除去到项目 ''%2!'' 中，因为已运行了发布 ''%3!'' 的快照。
21203 | 10 | 在 %1! 中发现重复行。未创建唯一索引。
21204 | 16 | 发布 ''%1!''不允许使用订阅复本或其订阅尚未进行同步。
21205 | 16 | 无法附加订阅，因为该发布不允许使用订阅复本以对更改进行同步。
21206 | 16 | 无法解析对象 %1! 的装载提示，因为该对象不是用户表。
21207 | 16 | 无法找到项目 %1! 的源对象 ID 信息。
21208 | 16 | 此步骤失败，因为在垂直分区中已存在列 ''%1!''。
21209 | 16 | 此步骤失败，因为在垂直分区中不存在列 ''%1!''。
21210 | 16 | 发布必须是 immediate_sync 类型才能允许使用订阅复本。
21211 | 16 | 该数据库是从订阅复本文件附加的，但未使用 sp_attach_subscription。请除去该数据库，然后用 sp_attach_subscription 重新附加该数据库。
21212 | 16 | 无法复制订阅。对于此操作，只支持单文件订阅数据库。
21213 | 16 | 非 SQL Server 订阅服务器不能订阅不用 DTS 包就允许使用 DTS 的发布。
21214 | 16 | 无法创建文件 ''%1!''，因为该文件已存在。
21215 | 16 | 只能在发布服务器上配置备用同步合作者。
21216 | 16 | 发布服务器 ''%1!''、发布服务器数据库 ''%2!''、发布 ''%3!'' 不是有效的同步伙伴。
21217 | 10 | 来自发布服务器 ''%2!'' 的 ''%1!'' 数据发布。
21218 | 16 | 如果为项目指定了架构选项 0x0000000000000000，那么 creation_script 属性就不能是 NULL。
21219 | 16 | 如果指定的源对象发布为 ''proc schema only'' 类型的项目，该源对象就必须是存储过程对象。
21220 | 16 | 无法添加项目 ''%1!''，因为已经为发布 ''%2!'' 生成了快照。
21221 | 16 | 如果指定的源对象将成为 ''view schema only'' 类型的项目，该源对象就必须是视图对象。
21222 | 16 | 对于过程或函数架构项目，@schema_option 参数只能包括选项 0x0000000000000001 或 0x0000000000002000。
21223 | 16 | 对于只包含架构的项目，@pre_creation_command 参数必须是 ''none'' 或 ''drop''。
21224 | 16 | 对于只包含架构的项目，''%1!'' 不是有效属性。
21225 | 16 | 如果要为远程激活而启用请求订阅代理程序，''offload_server'' 属性就不能为 NULL 或空白。
21226 | 16 | 数据库 ''%1!'' 没有对指定发布的请求订阅。
21227 | 16 | ''offload_server'' 属性不能与订阅服务器的名称相同。
21228 | 16 | 如果指定的源对象将发布为 ''func schema only'' 类型的项目，该源对象就必须是用户定义的函数对象。
21229 | 16 | 对于视图架构项目，仅有的可用架构选项为：0x0000000000000001、0x0000000000000010、0x0000000000000040、0x0000000000000100 和 0x0000000000002000。
21230 | 16 | 请勿为架构更改而调用此存储过程，因为当前数据库没有用于复制。
21231 | 16 | 自动标识范围支持只对允许排队更新的发布才有用。
21232 | 16 | 标识范围值必须是大于 1 的正数。
21233 | 16 | 阈值必须介于 1 到 100 之间。
21234 | 16 | 无法使用 INSERT 命令，因为该表有标识列。必须使用插入自定义存储过程以设置订阅服务器上的 ''identity_insert'' 设置。
21235 | 16 | 只有当注目使用了自动标识范围管理时，才能设置项目属性 ''%1!''。
21236 | 16 | 对发布服务器 ''%1!'' 的订阅不允许使用订阅复本或订阅尚未进行同步。
21237 | 16 | 存在对发布服务器 ''%1!'' 的强制订阅。只能复制请求和匿名订阅。
21238 | 16 | 存在对发布 ''%1!'' 的强制订阅。只能复制请求和匿名订阅。
21239 | 16 | 无法复制订阅，因为在数据库中未找到已同步的订阅。
21240 | 16 | 表 ''%1!'' 已用不同的自动标识支持选项发布为另一个项目。
21241 | 16 | 阈值应介于 0 到 99 之间。
21242 | 16 | 未能成功创建项目 ''%1!'' 的冲突表。
21243 | 16 | 发布服务器 ''%1!''、发布数据库 ''%2!''、发布 ''%3!'' 未能添加到同步伙伴列表中。
21244 | 16 | 当基表不支持列级跟踪时，字符模式发布就不支持垂直筛选。
21245 | 16 | 表 ''%1!'' 不是发布 ''%2!'' 的一部分。
21246 | 16 | 因为表 ''%1!'' 不是任何发布的一部分，所以此步骤失败。
21247 | 16 | 无法在 ''%1!'' 处创建文件。请确保文件路径有效。
21248 | 16 | 无法附加订阅文件 ''%1!''。请确保文件路径有效并且文件可更新。
21249 | 16 | OLE DB 或 ODBC 订阅服务器无法订阅发布 ''%2!'' 中的项目 ''%1!''，因为该项目有 timestamp 列，并且该发布是 ''allow_queued_tran'' 的（允许排队更新订阅）。
21250 | 16 | 主键列 ''%1!'' 不能从垂直分区中排除。
21251 | 16 | 发布服务器 ''%1!''、发布服务器数据库 ''%2!''、发布 ''%3!'' 未能从同步伙伴列表中删除。
21252 | 16 | 从同步伙伴列表中删除默认发布服务器 ''%1!''、发布数据库 ''%2!''、发布 ''%3!'' 是无效的
21253 | 16 | 参数 ''@add_to_active_directory'' 不能设置为 TRUE，因为 Active Directory 客户包未正确安装在 SQL Server 运行所在的计算机上。
21254 | 16 | 未能完成发布 ''%1!'' 上的 Active Directory 操作，因为 Active Directory 客户包未正确安装在 SQL Server 运行所在的计算机上。
21255 | 16 | 列 ''%1!'' 在表 ''%2!'' 中已存在。
21256 | 16 | 筛选子句 ''%1!'' 中所用的一列在表 ''%2!'' 中不存在，或不能从当前分区中排除。
21257 | 16 | 项目 ''%2!'' 的属性 ''%1!'' 无效。
21258 | 16 | 必须首先除去所有现有的合并发布，才能添加对数据库 ''%1!'' 的匿名或本地订阅。
21259 | 16 | 属性值 ''%1!'' 无效。
21260 | 16 | 架构复制失败，因为服务器 ''%2!'' 上的数据库 ''%1!'' 不是表 ''%3!'' 的原始发布者。
21261 | 16 | 如果将为远程执行而卸载此订阅的代理程序，就必须指定卸载服务器。
21262 | 16 | 从分区中除去列 ''%1!'' 失败，因为某一计算列正在访问该列。
21263 | 16 | 参数 ''%1!'' 不能是 NULL 或空白字符串。
21264 | 16 | 不能从表 ''%2!'' 中除去列 ''%1!''，因为该列是主键列。
21265 | 16 | 不能从表 ''%2!'' 中除去列 ''%1!''，因为有一个唯一索引正在访问该列。
21266 | 16 | 不能既为合并发布、又为带排队更新选项的发布而发布表 ''%1!''。
21267 | 10 | 指定的队列类型值无效。有效值 = (%1!)。
21268 | 10 | 当存在对该发布的订阅时，无法更改队列类型。
21269 | 16 | 无法将计算列或 timestamp 列添加到字符模式发布的垂直分区中。
21270 | 10 | 排队快照发布属性 ''%1!'' 的值不能是 ''%2!''。
21272 | 16 | 无法清除发布 ''%1!'' 的元数据，因为其它发布正在使用此发布中的一个或多个项目。
21273 | 16 | 必须将订阅服务器升级到 SQL Server 2000 才能创建对 SQL Server 2000 发布服务器的可更新订阅。
21274 | 16 | 发布名称 ''%1!'' 无效。
21275 | 16 | 绑定到架构的视图 ''%1!'' 只能发布为 ''indexed view schema only'' 或基于日志的索引视图（仅事务性的）项目。
21276 | 16 | 类型必须是 ''table'' 或 ''( view | indexed view | proc | func ) schema only''。
21277 | 16 | 源对象 ''%1!'' 必须是绑定到架构的视图才能发布为 ''indexed view schema only'' 或基于日志的索引视图项目。
21278 | 16 | 源对象 ''%1!'' 必须是绑定到架构的视图，并且至少具有一个聚集索引，才能发布为基于日志的索引视图项目。
21279 | 16 | 为发布生成了快照之后，无法再更改合并项目的 ''schema_option'' 属性。若要更改此项目的 ''schema_option'' 属性，就必须除去并重新创建对应的合并发布。
21280 | 16 | 订阅服务器数据库 ''%2!'' 无法订阅发布 ''%1!''，因为该发布包含一个或多个项目，这些项目已被同一订阅服务器数据库在 ''事务'' 级别上订阅。
21281 | 16 | 订阅服务器数据库 ''%2!'' 无法订阅发布 ''%1!''，因为该发布包含一个或多个项目，这些项目已被同一订阅服务器数据库在合并级别上订阅。
21282 | 16 | 当 @auto_identity_support 设置为 FALSE 时，@identity_range、@pub_identity_range 和 @threshold 必须是 NULL。
21283 | 16 | 无法将表 ''%2!'' 的列 ''%1!'' 从垂直分区中排除，因为有一个计算列依赖于该列。
21284 | 16 | 从表 ''%2!'' 中除去列 ''%1!'' 失败。
21285 | 16 | 向表 ''%2!'' 中添加列 ''%1!'' 失败。
21286 | 16 | 冲突表 ''%1!'' 不存在。
21287 | 16 | 指定的 @destination_folder 不是现有文件夹的有效路径。
21288 | 16 | 未能在指定的 @destination_folder 中创建快照目录结构。
21289 | 16 | 尚未生成快照文件，或已清除了这些文件。
21290 | 16 | 标识范围值对于标识列的数据类型而言太大。
21291 | 16 | 指定的自动标识支持参数与其它项目中的设置冲突。
21292 | 16 | 不能在同一发布中两次发布对象 ''%1!''。
21293 | 10 | 警告：添加项目 ''%1!'' 的更新订阅可能会导致数据的不一致性，因为源表已经订阅了 ''%2!''
21294 | 16 | 必须指定 @publisher（及 @publisher_db）或 @subscriber（及 @subscriber_db），但不能同时指定二者。
21295 | 16 | 发布 ''%1!'' 不包含任何使用自动标识范围管理的项目。
21296 | 16 | 参数 @resync_type 必须是 0, 1, 2。
21297 | 16 | resync 类型无效。没有对此订阅执行任何验证。
21298 | 16 | 重新同步此订阅失败。
21299 | 16 | 订阅服务器分区验证表达式 ''%1!'' 无效。
21300 | 10 | 指定了冲突解决程序信息，但未指定用于项目 ''%1!'' 的冲突解决程序。将使用默认的冲突解决程序。
21301 | 16 | 使用 ''%1!'' 冲突解决程序时，应指定冲突解决程序信息。
21302 | 16 | 使用 ''%1!'' 冲突解决程序时，冲突解决程序信息应指定数据类型为 datetime 或 smalldatetime 的列。
21303 | 16 | 项目 ''%1!'' 应启用列跟踪以使用 ''%2!'' 冲突解决程序。将使用默认冲突解决程序以解决此项目上的冲突。
21304 | 16 | 未能在表 ''%1!'' 上创建合并触发器。
21305 | 16 | 未能在订阅数据库中更新架构更改信息。
21306 | 16 | 由于对发布 ''%1!'' 的订阅已失效，所以未能生成订阅的复本。
21307 | 16 | 由于对发布 ''%1!'' 的订阅已失效，所以未能附加订阅。
21308 | 10 | 行数验证配置文件。
21309 | 10 | 合并代理程序用于执行行数验证的配置文件。
21310 | 10 | 行数和校验值验证配置文件。
21311 | 10 | 合并代理程序用于执行行数和校验值验证的配置文件。
21312 | 10 | 无法更改此发布属性，因为此发布有活动的订阅。
21313 | 10 | 对于静态发布，订阅服务器分区验证表达式必须为 NULL。
21314 | 10 | ''%1!'' 和 ''%2!'' 之中必须有且仅有一个不是 NULL。
21315 | 10 | 为表 ''%1!'' 进行的发布服务器标识范围调整失败。
21316 | 10 | 为发布 ''%1!'' 进行的发布服务器标识范围调整失败。
21317 | 10 | 已存在对发布 ''%1!'' 的强制订阅。请用 sp_mergesubscription_cleanup 来除去已失效的强制订阅。
21318 | 10 | 表 ''%1!'' 必须至少有一列包括在垂直分区内。
21319 | 16 | 未能找到指定发布的快照代理程序命令行。
21320 | 16 | 此版本的发布服务器无法使用 SQL Server 7.0 分发服务器。
21321 | 16 | 参数 @dynamic_snapshot_location 不能是空白字符串。
21323 | 16 | 只能为启用了动态筛选功能的发布调度动态快照作业。
21324 | 16 | 必须为指定的发布添加快照代理程序之后，才能调度动态快照作业。
21325 | 16 | 未能找到指定发布的快照代理程序 ID。
21326 | 16 | 未能找到指定发布的、''%1!'' 为 ''%2!'' 的动态快照作业。
21327 | 16 | ''%1!'' 不是有效的动态快照作业名称。
21328 | 16 | 指定的动态快照作业名称 ''%1!'' 已经在使用。请用另一个作业名称再试该操作。
21329 | 16 | @dynamic_snapshot_jobid 和 @dynamic_snapshot_jobname 中，只能指定其中之一为非默认值。
21330 | 16 | 在复制工作目录下创建子目录失败。(%1!)
21331 | 16 | 将用户脚本文件复制到分发服务器失败。(%1!)
21332 | 16 | 检索发布信息失败：%ls。请再次检查该名称。
21333 | 16 | 协议错误。消息指出有一个生成已消失。
21334 | 16 | 无法初始化基于消息队列的订阅，因为平台不兼容消息队列 %1!
21335 | 16 | 警告：列 ''%1!'' 在垂直分区中已存在。
21336 | 16 | 警告：列 ''%1!'' 在垂直分区中不存在。
21337 | 16 | @subscriber_type 值无效。有效选项为 ''local'' 和 ''global''。
21338 | 16 | 无法从发布 ''%2!'' 中除去项目 ''%1!''，因其快照已运行并且此发布可能含有活动订阅。
21339 | 10 | 警告：发布使用仅由运行 ''%1!'' 或更高版本的订阅服务器所支持的功能。
21340 | 16 | "按需"用户脚本无法应用与快照发布。
21341 | 16 | 当 @alt_snapshot_folder 既不空白也不为空时，@dynamic_snapshot_location 不能为非空白字符串。
21342 | 16 | 当 @use_ftp 为 ''true'' 时，@dynamic_snapshot_location 不能是非空白字符串。
21343 | 16 | 未能找到存储过程 ''%1!''。
21344 | 16 | 为 %1! 参数指定的值无效。
21345 | 16 | 不允许排除分区中最后一列。
21346 | 16 | 未能将 ''%1!'' 的所有者更改为 ''%3!''。
21347 | 16 | 不能从垂直分区操作中排除列 ''%1!''，因为有一个唯一索引正在访问该列。
21348 | 16 | 属性名称 ''%1!'' 无效。
21349 | 10 | 警告：仅运行 SQL Server 7.0 Service Pack 2 或更高版本的订阅服务器才能与发布 ''%1!'' 同步，因为已指示记录分散的冲突。
21350 | 10 | 警告：仅运行 SQL Server 2000 的订阅服务器才能与发布 ''%1!'' 同步，因为已使用压缩的快照。
21351 | 10 | 警告：仅运行 SQL Server 2000 的订阅服务器才能与发布 ''%1!'' 同步，因为正使用垂直筛选。
21352 | 10 | 警告：仅运行 SQL Server 2000 的订阅服务器才能与发布 ''%1!'' 同步，因为执行了架构复制。
21353 | 10 | 警告：仅运行 SQL Server 7.0 Service Pack 2 或更高版本的订阅服务器才能与发布 ''%1!'' 同步，因为已执行广发布重新初始化。
21354 | 10 | 警告：仅运行 SQL Server 2000 的订阅服务器才能与发布 ''%1!'' 同步，因为已执行广发布重新初始化。
21355 | 10 | 警告：仅运行 SQL Server 7.0 Service Pack 2 或更高版本的订阅服务器才能与发布 ''%1!'' 同步，因为已执行合并元数据清除任务。
21356 | 10 | 警告：仅运行 SQL Server 7.0 Service Pack 2 或更高版本的订阅服务器才能与发布 ''%1!'' 同步，因为已执行广发布验证。
21357 | 10 | 警告：仅运行 SQL Server 2000 的订阅服务器才能与发布 ''%1!'' 同步，因其某个项目中存在 SQL Server 2000 的新数据类型。
21358 | 10 | 警告：仅运行 SQL Server 2000 的订阅服务器才能与发布 ''%1!'' 同步，因其某个项目中至少有一个 timestamp 列。
21359 | 10 | 警告：仅运行 SQL Server 2000 的订阅服务器才能与发布 ''%1!'' 同步，因为正使用自动标识范围。
21360 | 10 | 警告：仅运行 SQL Server 2000 的订阅服务器才能与发布 ''%1!'' 同步，因为生成该发布的快照后新项目已添加到该发布中。
21361 | 16 | 对于 ''%1!'' 代理程序作业，指定的 @agent_jobid 是无效的作业 ID 。
21362 | 16 | 合并筛选 ''%1!'' 不存在。
21363 | 16 | 向 Active Directory 添加发布 ''%1!'' 失败。%s。
21364 | 16 | 未能添加项目 ''%1!''，因为已生成了快照。请将 @force_invalidate_snapshot 设置为 1 以强制进行此操作并使现有的快照无效。
21365 | 16 | 未能添加项目 ''%1!''，因为存在活动订阅。请将 @force_reinit_subscription 设置为 1 以强制添加更改并重新初始化活动订阅。
21366 | 16 | 未能添加筛选 ''%1!''，因为已生成了快照。请将 @force_invalidate_snapshot 设置为 1 以强制进行此操作并使现有的快照无效。
21367 | 16 | 未能添加筛选 ''%1!''，因为存在活动订阅。请将 @force_reinit_subscription 设置为 1 以强制添加更改并重新初始化活动订阅。
21368 | 16 | 指定的卸载服务器名称包含无效的字符 ''%1!''。
21369 | 16 | 未能从 Active Directory 删除发布 ''%1!''。
21370 | 16 | 指定的重新同步日期 ''%1!'' 为无效日期。
21371 | 10 | 未能将发布 ''%1!'' 的更改传播到活动目录。
21372 | 16 | 无法从发布 ''%2!'' 中除去筛选 ''%1!''，因其快照已运行并且此发布可能含有活动订阅。
21373 | 11 | 未能打开数据库 %1!。无法升级复制设置和系统对象。如果该数据库用于复制，请于该数据库可用时在 [master] 数据库中运行 sp_vupgrade_replication。
21374 | 10 | 升级数据库 %1! 中的分发设置和系统对象。
21375 | 10 | 升级数据库 %1! 中的发布设置和系统对象。
21376 | 11 | 未能打开数据库 %1!。无法升级复制设置和系统对象。如果该数据库用于复制，请于该数据库可用时在 [master] 数据库中运行 sp_vupgrade_replication。
21377 | 10 | 升级数据库 %1! 中的订阅设置和系统对象。
21378 | 16 | 未能打开分发数据库 %1!，因其处于脱机状态或正要恢复。无法升级复制设置和系统对象。请确保该数据库可用并再次运行 sp_vupgrade_replication。
21379 | 16 | 未能从发布 ''%2!'' 中除去项目 ''%1!''，因为已生成了快照。请将 @force_invalidate_snapshot 设置为 1 以强制进行此操作并使现有的快照无效。
21380 | 16 | 未能在不强制进行重新初始化的情况下添加标识列。请将 @force_reinit_subscription 设置为 1 以强制进行重新初始化。
21381 | 16 | 未能对表 ''%1!'' 添加（除去）列，因其属于带可更新的活动订阅的发布。请将 @force_reinit_subscription 设置为 1 以强制进行重新初始化。
21382 | 16 | 未能除去筛选 ''%1!''，因为已生成了快照。请将 @force_invalidate_snapshot 设置为 1 以强制进行此操作并使现有的快照无效。
21383 | 16 | 未能在此服务器上启用合并发布，因其分发服务器的工作目录采用的不是 UNC 路径。
21384 | 16 | 指定的订阅不存在或者尚未同步。
21385 | 16 | 快照未能处理发布 ''%1!''。可能是由活动架构更改活动所致。
21386 | 16 | 架构更改在发布 ''%1!'' 上失败。可能是由活动快照或其它架构更改活动所致。
21387 | 16 | 某个项目的扩充的动态快照视图定义超过了 3499 个字符长度的系统限制。为了初始化指定的订阅，请考虑使用默认机制以代替动态快照。
21388 | 10 | 发布 ''%1!'' 的并发快照尚未被日志读取器代理激活。
21389 | 10 | 警告：仅运行 SQL Server 2000 的订阅服务器才可与发布 ''%1!'' 同步，因为列级排序规则是用项目架构创建脚本编写而成。
21390 | 10 | 警告：仅运行 SQL Server 2000 的订阅服务器才可与发布 ''%1!'' 同步，因为扩展属性是用项目架构创建脚本编写而成。
21391 | 10 | 警告：仅运行 SQL Server 2000 的订阅服务器才能与发布 ''%1!'' 同步，因其包含仅限于架构的项目。
21392 | 16 | 行筛选 (%1!) 对于发布 ''%4!'' 中项目 ''%3!'' 的列分区 (%2!) 无效。
21393 | 16 | 除去 ''%3!'' 中项目 ''%2!'' 的行筛选 (%1!)。请重新发出 sp_articlefilter 和 sp_articleview 以创建行筛选。
21394 | 16 | 为排队更新发布指定的架构选项无效。应将架构选项设置为包含 DRI 约束。
21395 | 10 | 无法将此列纳入事务发布中，因为该列的 ID 大于 255。
21396 | 16 | 该订阅已标记为非活动的订阅，必须将其除去或重新创建。
21400 | 16 | 项目属性必须在项目 ''%1!'' 的最初的发布服务器处更改。
21401 | 16 | 项目名称不能为 ''all''。
21402 | 16 | 参数 ''%1!'' 的值不正确。
21403 | 10 | max_concurrent_dynamic_snapshots 发布属性必须大于或等于零。
21404 | 10 | ''%1!'' 不是 ''%2!'' 参数的有效值。该值必须为大于 300 的正整数或为 0。
21405 | 10 | ''%1!'' 不是 ''%2!'' 参数的有效值。该值必须为大于或等于 %3! 的整数。
21406 | 10 | ''%1!'' 不是 ''%2!'' 参数的有效值。该值必须是 0 或 1。
21413 | 16 | 未能获取指示队列前部的应用程序锁。
21414 | 10 | 获取应用程序锁意外地失败。
21415 | 10 | 释放应用程序锁意外地失败。
21416 | 10 | 不能更改项目 ''%2!'' 的属性 ''%1!''。
21417 | 10 | 不允许队列超时值大于 12 个小时。
21418 | 10 | 向表 ''%2!'' 中添加列 ''%1!'' 失败，因为元数据溢出。
21419 | 10 | 不能更改项目 ''%2!'' 的筛选 ''%1!''。
21420 | 10 | 不能更改订阅属性 ''%1!''。
21421 | 10 | 不能除去项目 ''%1!''，因为其它项目正在将其作为联接项目使用。
21500 | 10 | 指定的订阅类型无效。数据库中已存在其它订阅类型的对发布 ''%1!'' 的订阅。
21501 | 10 | 所提供的冲突解决程序信息未指定 ''%1!'' 要用于冲突解决的有效列名。
21502 | 10 | 发布 ''%1!'' 不允许订阅与可替代的同步合作伙伴同步。


解决系统错误信息

本主题标识系统错误信息，为之提供其它信息或用户对策。


错误 103

严重级别 15
消息正文

以 ''%2!'' 开头的 %1! 太长。最大长度为 %4!。

解释

如果您在双引号内括入的字符串的字符数多于 128 个，则应用程序可能收到该错误。当 QUOTED_IDENTIFIERS 选项设置为 ON (SET QUOTED_IDENTIFIERS ON)，则 Microsoft® SQL Server™ 预期被引用的标识符括在双引号 (") 内，而数据值括在单引号内 (')。在存储过程的字符参数的情况下，如果字符串小于 128 个字符，则 SQL Server 接受括在双引号内的数据值。SQL Server 应视它们为语法错误，并生成错误。

在使用 SQL Server ODBC 驱动程序 2.50.0121 版和更高版本的 ODBC 应用程序中也可以看到该错误信息。当运行于 SQL Server 6.x 版或更高版本服务器时，这些驱动程序设置 QUOTED_IDENTIFIERS ON，以便 ODBC 驱动程序的行为更密切地符合 ANSI 和 ODBC 标准。在升级到 SQL Server 6.x 或更高版本和 ODBC 2.50.0121 或更高版本驱动程序以后，使用双引号分隔参数值的 ODBC 应用程序可能看到该行为。

当从 Microsoft Internet Information 服务 (IIS) 之类的 ODBC 应用程序，使用包含嵌套存储过程执行（诸如 xp_cmdshell，其中参数以双引号分隔）的存储过程时，已看到该行为。

如果已发出 SET QUOTED_IDENTIFIER ON 选项，则 SQL Server 并不总是标志括在双引号内的存储过程参数。

对策

更改过程调用，将参数值括在单引号内：

EXECUTE myproc 1, 'abcdefghijklmn'

ODBC 应用程序还可以使用绑定参数标记，而不使用任何一个专用 Transact-SQL 语法直接提供参数值：

SQLExecDirect(hstmt, "EXECUTE myproc ?,?", SQL_NTS);

或者 ODBC 标准语法：

SQLExecDirect(hstmt, "{ call myproc (?,?)}", SQL_NTS);

在这些情况下，可以通过在存储过程的开始放置 SET QUOTED_IDENTIFIER OFF 语句来避免此问题。该设置将只在存储过程的作用域内有效，并不会影响存储过程外的其它语句执行。

CREATE PROCEDURE iisproc
AS
   BEGIN
      DECLARE @stmt varchar(255)
      SET QUOTED_IDENTIFIER OFF
      SELECT @stmt = 'xp_cmdshell "c:\myprog xxxxxxxxxxxxxxxxxxxxxxx"'       EXECUTE (@stmt)
   END

请参见

错误 1 - 999

EXECUTE

SET QUOTED_IDENTIFIER

使用标识符


错误 107

严重级别 15
消息正文

列前缀 ''%1!'' 与查询中所用的表名或别名不匹配。

解释

指定了未对应于查询中指定的任何表名的列前缀。将列前缀与 FROM 子句中的表名和别名相匹配。

该错误的一个常见起因是当提供了表的别名时使用表名。当使用表别名（ANSI 术语中的相关名称）时，Microsoft® SQL Server™ 中的语法检查遵照 ANSI 规范。ANSI 指出

A <table name> ... is exposed ... if and only if the <table reference>
does not specify a <correlation name>.

如果已在 FROM 子句中为表名提供了别名，则只可以使用别名来限定表中的列；表名不能在语句中的其它任何位置使用，否则将被标记为语法错误。

作为行为上的区别的例子，假定已执行以下脚本：

USE Northwind
GO
SELECT Customers.ContactName
FROM Customers cu
WHERE ContactName LIKE 'C%'
GO
SELECT cu.ContactName
FROM Customers cu
WHERE Customers.ContactName LIKE 'C%'
GO

在两个 SELECT 语句中，注意尽管已提供表别名 cu 来代替表名，但还是使用了 Customers 来限定列 ContactName。这两个查询都返回以下错误信息：

服务器：错误信息 107，级别 16，状态 3

列前缀 ''Customers'' 与查询中所用的表名或别名不匹配。

对策

使用对应于表的表现名称的列前缀。

重写使用表名限定列名的所有查询。改为使用表别名。例如，以下 SELECT 语句等同于上面的语句，并使用表别名限定列：

USE Northwind
GO
SELECT cu.ContactName
FROM Customers cu
WHERE cu.ContactName LIKE 'C%'
GO

请参见

错误 1 - 999

查询基础知识

SELECT

使用表别名


错误 109

严重级别 15
消息正文

INSERT 语句中列的数目大于 VALUES 子句中指定的值的数目。VALUES 子句中值的数目必须与 INSERT 语句中指定的列的数目匹配。

解释

当 INSERT 语句中列出的列数大于 VALUES 子句中指定的值时发生该错误。VALUES 子句中值的数目必须与 INSERT 语句中指定的列的数目匹配。

请不要将错误 109 与操作系统错误 109 搞混。操作系统错误 109 指已终止某命名管道连接。

对策

重写 INSERT 语句，确保指定的列数与 VALUES 子句中列数匹配。例如：

INSERT t1 (col1,col2,col3) VALUES (val1,val2,val3)

请参见

INSERT


错误 137

严重级别 15
消息正文

必须声明变量 ''%1!''。

解释

当在未首先声明某变量的情况下将其用在 SQL 脚本中时发生该错误。下例返回错误 137：

SET @mycol = 'ContactName'
SELECT @mycol
GO

该错误的更复杂起因之一为使用在 EXECUTE 语句外声明的变量。例如：

USE Northwind
GO
DECLARE @mycol nvarchar(20)
SET @mycol = 'ContactName'
EXECUTE ('SELECT @mycol FROM Customers')
对策

验证 SQL 脚本中使用的所有变量在使用前已在脚本中声明。

重写过程，以便它未在 EXECUTE 语句中引用在该语句外声明的变量。

USE Northwind
GO
DECLARE @mycol nvarchar(20)
SET @mycol = 'ContactName'
EXECUTE ('SELECT ' + @mycol + ' FROM Customers')

请参见

DECLARE @local_variable

错误 1 - 999

EXECUTE

SELECT @local_variable

SET @local_variable


错误 156

严重级别 15
消息正文

在关键字 ''%1!'' 附近有语法错误。

解释

该错误表示某 Transact-SQL 语句的语法不正确，并且在错误信息中指定的关键字附近检测到该语法错误。语法错误的最常见起因是 Transact-SQL 关键字或运算符拼写错误，以及以错误的顺序指定 Transact-SQL 语句的语法。

该错误的更复杂起因之一可能是兼容级别与当前数据库不匹配。如果当前数据库具有的兼容级别不是 70，则 Microsoft® SQL Server™ 不会识别兼容级别为 70 的数据库可以识别的关键字。

对策

首先，检查错误信息中指定的关键字附近的 Transact-SQL 语句语法。因为 Transact-SQL 语言语法可能十分复杂，所以 SQL Server 可能错误报告语法错误在 Transact-SQL 语句中的位置，使得报告的位置比实际发生的位置要晚。其次，重新检查生成该错误的整个 Transact-SQL 语句。验证语句的语法顺序。

确保数据库兼容级别不为 65，而为 70。

请参见

向后兼容性

错误 1 - 999

Transact-SQL 概述

保留关键字

sp_dbcmptlevel


错误 170

严重级别 15
消息正文

第 %1! 行：在 ''%1!'' 附近有语法错误。

解释

该错误表示某 Transact-SQL 语句的语法不正确，并且在错误信息中指定的 Transact-SQL 语法元素附近检测到该语法错误。语法错误的最常见起因是 Transact-SQL 语法元素或运算符拼写错误，以及以错误的顺序指定 Transact-SQL 语句的语法。

下例引起错误 170：

USE Northwind
GO
SELECT &
FROM Categories
ORDER BY CategoryName ASC
对策

首先，检查错误信息中指定的语法元素附近的 Transact-SQL 语句语法。因为 Transact-SQL 语言语法可能十分复杂，所以 Microsoft® SQL Server™ 可能错误报告语法错误在 Transact-SQL 语句中的位置，使得报告的位置比实际发生的位置要晚。其次，重新检查生成该错误的整个 Transact-SQL 语句。验证语句的语法顺序。

在上面的示例中，将"与"符号 (&) 更改为星号 (*) 可以更正问题：

USE Northwind
GO
SELECT *
FROM Categories
ORDER BY CategoryName ASC

请参见

错误 1 - 999

Transact-SQL 概述


错误 207

严重级别 16
消息正文

列名 ''%1!'' 无效。

解释

当 Transact-SQL 语句中引用的列未在查询的 FROM 子句中指定的任何表中找到时发生该错误。

对策

将列名更改为查询引用的一个表中存在的列名。

下例返回错误 207：

USE Northwind
GO
SELECT CategoryName1
FROM Categories
GO

通过查看全部命令来评估该问题。对于上面的示例，确保 SELECT 语句包含指定表的有效列名的名称（CategoryName 而不是上面指定的 CategoryName1）。

USE Northwind
GO
SELECT CategoryName
FROM Categories
GO

请参见

错误 1 - 999

SELECT


错误 208

严重级别 16
消息正文

对象名 ''%1!'' 无效。

解释

当引用不存在的对象时发生该错误。如果对象存在，则可能需要在对象名中包括所有者的名称。

如果对象不为试图访问它的用户所有，并且不为数据库所有者所有，则对该对象的所有引用都必须包括所有者的名称。例如，如果 user1 创建名为 test 的表，则当其他用户引用该表时必须使用名称 user1.test。

Microsoft® SQL Server™ 的数据库对象的命名规则是：

[[[server_name.][database_name].][owner_name].]object_name

server_name 的默认值是当前服务器，而 database_name 的默认值是当前数据库。owner_name 的默认值是当前用户。因为 owner_name 是对象名的一部分，所以两个不同的用户有可能在相同的数据库中拥有名称相同的表（例如 user1.test 和 user2.test）。有关命名规则的更多信息，请参见 Transact-SQL 语法规则。

当引用使用 EXECUTE 语句创建的临时表时也可能发生该消息。

对策

处理该错误的过程视您对错误信息文本中指出的对象的了解情况而定。

还必须设置适当的权限以允许对某对象的访问。如果未设置这些权限，则发生错误 229 或 230。

如果不知道对象的所有者
  • 执行 sp_help（不带参数）以显示对象所有者。

    或

  • 如果对象是表或视图，则查询信息架构视图以确定对象所有者和类型。如果对象不是表或视图，则查询 sysobjects 系统表以确定对象所有者和类型。

例如，若要确定名为 table_1 的对象的所有者和类型，请执行下列语句：

USE master
GO
SELECT TABLE_SCHEMA
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'table_1'
GO

如果该查询未返回行，则对象要么驻留于另一个数据库中，要么不存在。

如果您不是该对象的所有者
  • 在对象名中包括对象所有者。例如：
    SELECT *
FROM user1.table_1

    尽管使用完全限定的对象名消除了该问题，但请记住在应用程序中包括完全限定的对象名可能使应用程序的维护变得复杂。例如，如果对某个表的所有引用都包括数据库名称，则更改该数据库名称可能会很困难。

    或

  • 令数据库所有者创建对象。如果该所有者创建对象，则任何用户都可以在不指定所有者的情况下找到该对象。但是，临时表驻留于 tempdb 中，当创建它们的用户进程或服务器连接终止时自动除去这些表。即使临时表由数据库所有者创建，用户也无法共享这些表。
如果对象未驻留于该数据库中
  • 使用 USE 语句将上下文切换到正确的数据库。例如：
    USE database_1

    或

  • 使用数据库名称限定对象名。例如：
    SELECT *
FROM database_1.user1.table_1

    如果您是对象所有者或对象由数据库所有者所有，则不需要所有者名称。例如：

    SELECT *
FROM database_1..table_1
如果引用使用 EXECUTE 语句创建的临时表
  • 如果必须使用 EXECUTE 语句创建临时表，则使用语法 ##tablename 将其创建为全局临时表。

请参见

CREATE TABLE

创建和修改表

错误 1 - 999

EXECUTE

信息架构视图

查询 SQL Server 系统目录

SELECT

sp_help

sysobjects

Transact-SQL 语法规则

USE


错误 220

严重级别 16
消息正文

发生数据类型 %1! 的算术溢出错误，值 = %2!。

解释

当试图将 float 或 real 数据类型值转换为无法存储该结果的数据类型时发生该错误。该错误阻止此运算完成。例如，如果试图将数字 32770 放置到 smallint 数据类型的变量或列中，则 Microsoft® SQL Server™ 返回该错误，因为 smallint 数据类型的变量或列只能存放从 -215 (-32,768) 到 215 (32,767) 的整数。

下例引起该错误：

DECLARE @myval smallint
SET @myval = 32770
SELECT @myval
GO
对策

对于数值运算，使用 ROUND、CAST 和 CONVERT 函数操作该值，以适合列或变量。更改该列或变量的数据类型。在上面描述的示例中，将列或变量由 smallint 更改为 int。

以下是更正的示例：

DECLARE @myval int
SET @myval = 32770
SELECT @myval
GO

请参见

CAST 和 CONVERT

数据类型

错误 1 - 999

ROUND


错误 229

严重级别 14
消息正文

拒绝了对对象 ''%2!''、数据库 ''%4!''、所有者 ''%6!''的 %1! 权限。

解释

当 Microsoft® SQL Server™ 用户试图进行某操作（如执行某存储过程，或读取或修改某个表）而又不具有适当的特权时发生该错误。

对策

对该对象具有完全控制的任何用户（如对象所有者或系统管理员），可以向需要访问该对象的用户授予必要的特权。

请参见

错误 1 - 999

EXECUTE

GRANT

管理权限

SELECT

UPDATE


错误 245

严重级别 16
消息正文

将 %1! 值 ''%2!'' 转换为数据类型为 %4! 的列时发生语法错误。

解释

当将某字符转换为整数时，Microsoft® SQL Server™ 返回该消息。例如，以下 SELECT 语句返回错误 245：

SELECT CONVERT(int, 'A')
-- Or
SELECT CAST('A' AS int)

SQL Server 之所以返回该错误信息，是因为从字符值向整数的转换只在该字符值类似数值时才可以进行。例如，字符 1（一）可以转换为整数。

SELECT CONVERT(int, '1')
-- Or
SELECT CAST('1' AS int)
对策

若要将字符转换为整数，请使用 ASCII 函数，它返回该字符的数值表示。例如：

SELECT CONVERT(int, ASCII('A'))
-- Or
SELECT CAST(ASCII('A') AS int)

请参见

ASCII

CAST 和 CONVERT

数据类型

错误 1 - 999


错误 259

严重级别 16
消息正文

未启用对系统目录的特殊更新。系统管理员必须重新配置 SQL Server 以允许这种操作。

解释

在 sp_configure 的 allow updates 系统配置选项设置为 0 时，当 Microsoft® SQL Server™ 检测到有人试图直接修改系统目录时发生该错误。

allow updates 系统配置选项允许系统管理员直接更改系统目录。

警告 直接操作系统目录会导致严重的问题。除非您的主要支持提供者指导您修改系统目录，否则请不要这样做。

对策

在修改任何系统目录之前，确保具有有效的数据库备份。

警告 对系统目录的不正确修改会导致数据库损坏或数据丢失。

如果可能，使用 sqlservr 应用程序的 -m 标志以单用户模式重新启动 SQL Server，以便不会发生疏忽性修改。有关更多信息，请参见 sqlservr 应用程序。

若要修改系统目录，请使用 osql 实用工具更改 allow updates 系统配置设置。

说明 只有系统管理员能够更改 allow updates 系统配置设置的值。

请参见

allow updates 选项

备份和还原数据库

错误 1 - 999

osql 实用工具

RECONFIGURE

将错误报告给您的主要支持提供者

设置配置选项

sp_configure

使用启动选项


错误 266

严重级别 16
消息正文

EXECUTE 后的事务计数指出缺少了 COMMIT 或 ROLLBACK TRANSACTION 语句。原计数 = %1!，当前计数 = %2!。

解释

如果某存储过程退出时其 @@TRANCOUNT 值与进入该存储过程时不同，则 Microsoft® SQL Server™ 返回错误 266。

说明 该错误可忽略，因为它只将消息发送到客户端而不影响执行。

下例重新产生该问题：

CREATE PROCEDURE test
AS
SELECT @@TRANCOUNT
ROLLBACK TRANSACTION
SELECT @@TRANCOUNT
GO
BEGIN TRANSACTION
EXECUTE test
GO

因为 @@TRANCOUNT 在两个 SELECT 语句中不相同，所以从存储过程返回时产生错误 266。

这是预期的行为，但它不表示事务不可以在一个存储过程内启动、完成或终止。而必须注意以便 @@TRANSACTION 函数在存储过程的入口和出口处匹配。有关更多信息，请参见 ROLLBACK TRANSACTION。

当编写嵌套存储过程时该问题发生的可能性更大。

对策

存在可以使存储过程不出现该错误的解决方案。以下是一组解决方案，每种方案都带有示例代码：

  1. 从相同的存储过程嵌套级（事务开始处）执行最终的 COMMIT TRANSACTION 或 ROLLBACK TRANSACTION 语句，如下例所示：
    -- Example 1.a
CREATE PROCEDURE test1a
AS
SELECT @@TRANCOUNT
GO
BEGIN TRANSACTION
EXECUTE test1a
ROLLBACK TRANSACTION
GO
-- Example 1.b
CREATE PROCEDURE test1c
AS
SELECT @@TRANCOUNT
GO
CREATE PROCEDURE test1b
AS
BEGIN TRANSACTION
EXEC test1c
COMMIT TRANSACTION
GO
EXECUTE test1b
GO
  2. 如果嵌套事务用于存储过程中，则执行匹配的提交。

    说明 在 @@TRANCOUNT 等于 0（零）之前不提交事务。

    -- Example 2
CREATE PROCEDURE test2b
AS
SELECT @@TRANCOUNT
BEGIN TRANSACTION
SELECT @@TRANCOUNT
COMMIT TRANSACTION
SELECT @@TRANCOUNT
GO
CREATE PROCEDURE test2a
AS
BEGIN TRANSACTION
EXECUTE test2b
COMMIT TRANSACTION
GO
EXECUTE test2a
GO
  3. 如果需要回滚，并且存储过程嵌套级与事务开始处不同，则以有效的用户定义错误使用 RAISERROR，并在 EXECUTE 语句之后检查 @@ERROR 函数。
    -- Example 3
USE master
EXECUTE sp_addmessage 50001, 16, 'Rollback of transaction in test3'
GO
CREATE PROCEDURE test3
AS
RAISERROR (50001,16,1)
GO
BEGIN TRANSACTION
EXEC test3
    IF @@error <> 50001
        BEGIN
            PRINT 'Commit'
            COMMIT TRANSACTION
        END
    ELSE
        BEGIN
            PRINT 'Rollback'
            ROLLBACK TRANSACTION
        END
GO
  4. 该规则的例外是，如果某触发器执行回滚，则 @@TRANCOUNT 不需要匹配其起始值，因为批处理已终止。但是，如果由触发器调用的存储过程终止了事务，则可能导致该问题。
    -- Example 4
CREATE TABLE x (col1 int)
GO
CREATE TRIGGER xins
    ON x
    FOR INSERT AS
        ROLLBACK TRANSACTION
GO
CREATE PROCEDURE sp_xinsert
AS
    SELECT @@TRANCOUNT
    INSERT x (col1) VALUES (1)
    SELECT @@TRANCOUNT
GO
BEGIN TRANSACTION
EXECUTE sp_xinsert
    IF @@error <> 0
        BEGIN
            PRINT 'Commit'
            COMMIT TRANSACTION
        END
    ELSE
        BEGIN
            PRINT 'Rollback'
            ROLLBACK TRANSACTION
        END
GO
SELECT *
FROM x

请参见

@@ERROR

@@TRANCOUNT

BEGIN TRANSACTION

COMMIT TRANSACTION

错误 1 - 999

EXECUTE

ROLLBACK TRANSACTION

事务


错误 268

严重级别 16
消息正文

无法在此数据库中运行 SELECT INTO。数据库所有者必须运行 sp_dboption 以启用此选项。

解释

当因为数据库未启用 select into/bulkcopy 数据库选项而不允许使用 SELECT INTO 语句时，发生该错误。数据库所有者必须打开 select into/bulkcopy 数据库选项，SELECT INTO 语句才可以成功完成。

该错误还可以由存储过程触发。

注意 启用 select into/bulkcopy 数据库选项允许发生无日志记录的操作。在执行无日志记录的操作之后，适当采取特定的备份策略以确保数据完整性。事务日志在无日志记录的操作后无法备份。在执行无日志记录的操作之后使用 BACKUP DATABASE 语句。

对策

数据库所有者或系统管理员必须使用 sp_dboption 系统存储过程启用 select into/bulkcopy 数据库选项。例如，对于 pubs 数据库，将使用 osql 命令提示实用工具执行下列步骤：

  1. 切换到 master 数据库并为 Northwind 数据库设置数据库选项。类型：
    USE master
GO
sp_dboption Northwind, 'select into/bulkcopy', true
GO
USE Northwind
GO
CHECKPOINT
GO
  2. 验证是否已正确进行更改。在 Northwind 上执行 sp_helpdb 系统存储过程。状态结果列应显示 select into/bulkcopy 数据库选项为已启用。类型：
    sp_helpdb Northwind
GO

可能需要检查有关 bcp 实用工具和 SELECT INTO 语句的信息。有关更多信息，请参见 SELECT 和 bcp 实用工具。在某些情况下，bcp 是日志中记录的操作，可以影响备份策略和事务日志备份频率。

请参见

备份和还原数据库

BACKUP

错误 1 - 999

osql 实用工具

设置数据库选项

sp_dboption

sp_help

sp_helpdb


错误 511

严重级别 16
消息正文

无法创建大小为 %1! 的行，该值大于允许的最大值 %2!。

解释

当试图插入大于表定义的最大大小的行时发生该错误。如果试图插入到表中的行太大而不能放入数据页，则发生该错误。

在 Microsoft® SQL Server™ 中，表中行的最大允许大小为 8060 字节。一个行不能跨数据页进行拆分。一个数据页大小为 8 KB，由数据行和一些内部数据结构组成。

对策

更改插入的数据，使其不超过可存储在单个行中的最大字节数 (8060)。

请参见

使用 INSERT 添加行

CREATE TABLE

INSERT

最大容量说明


错误 515

严重级别 16
消息正文

无法将 NULL 值插入列 ''%1!''、表 ''%3!''；该列不允许空值。%ls 失败。

解释

当在运行时试图使用空值插入或更新不允许空值的列时，发生该错误。

该消息与以下消息不同，以下消息表示在编译时检测到该试图。

错误号 233：表 ''%3!'' 中的列 ''%1!'' 不能为空。

如果将作为存储过程或触发器中的 INSERT 或 UPDATE 语句的目标的表除去并重新创建，并且一个或多个表列定义已由 NULL 更改为 NOT NULL，则也可以发生该错误。

对策

如果当正在运行 UPDATE 或 INSERT 语句时发生该错误，则验证插入或更新的数据是否与受影响表的列定义相匹配。

插入或更新列不允许空值。

说明 在通过值的直接 UPDATE 或 INSERT 中，将获得编译错误 233 而不是错误 515。通常 515 错误号发生在使用另一个表中的数据的 INSERT/SELECT 或 UPDATE 语句中。

如果当存储过程或触发器引用已除去并重新创建的表（该表的为空性已不同）时发生该错误，则除去并重新创建受影响的存储过程或触发器。

如果您无法解决该问题，请与您的主要支持提供者联系以获得帮助。

请参见

ALTER PROCEDURE

ALTER TABLE

ALTER TRIGGER

CREATE PROCEDURE

CREATE TABLE

CREATE TRIGGER

DROP PROCEDURE

DROP TRIGGER

错误 1 - 999

INSERT

将错误报告给您的主要支持提供者

SELECT

UPDATE


错误 544

严重级别 16
消息正文

当 IDENTITY_INSERT 设置为 OFF 时，不能向表 ''%1!'' 中的标识列插入显式值。

解释

当试图将包含特定标识值的行插入到包含标识列的表中时发生该错误。但是，指定表未启用 SET IDENTITY_INSERT。

对策

若要将特定的标识行成功插入到包含标识列的表中，必须启用 SET IDENTITY_INSERT。以下示例插入标识行 2，其中 iID 定义为标识列。

USE pubs
GO
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
      WHERE TABLE_NAME = 'tblTest')
   DROP TABLE tblTest
GO
CREATE TABLE tblTest
( iID   int IDENTITY(1, 1),
  strData nvarchar(15)
)
GO
INSERT INTO tblTest (strData) VALUES (N'Leverling')
INSERT INTO tblTest (strData) VALUES (N'Davolio')
GO
SET IDENTITY_INSERT tblTest ON
GO

-- Insert the specified identity row using a column list.
INSERT INTO tblTest (iID, strData) VALUES (5, N'Callahan')
GO
-- Display the rows in tblTest to see identity values.

SELECT *
FROM tblTest

-- Disable IDENTITY_INSERT.
SET IDENTITY_INSERT tblTest OFF
GO

请参见

ALTER TABLE

CREATE TABLE

错误 1 - 999

SET IDENTITY_INSERT


错误 601

严重级别 12
消息正文

由于数据移动，未能继续以 NOLOCK 方式扫描。

解释

当使用 NOLOCK 锁定提示或设置为 READ UNCOMMITTED 的事务隔离级别扫描时，可能会删除扫描当前位置处的页。当这种情况发生时，Microsoft® SQL Server™ 将无法继续扫描。

对策

该错误终止查询。重新提交查询或删除 NOLOCK 锁定提示。

请参见

锁定提示

SELECT

SET TRANSACTION ISOLATION LEVEL


错误 602

严重级别 21
消息正文

未能在 sysindexes 中找到数据库 ID %1! 中对象 ID %2! 的索引 ID %3! 对应的行。请对 sysindexes 运行 DBCC CHECKTABLE。

解释

当 Microsoft® SQL Server™ 无法在 sysindexes 表中找到需要的表或索引所对应的行时（例如，当执行引用已除去的表的存储过程时），发生该错误。

对策

如果该错误因为存储过程引用某个已除去的表而发生，则除去并重新创建该存储过程。该错误还可能和其它错误信息一起发生，而这些消息更好地指出问题的根本原因。在 sysindexes 上执行 DBCC CHECKTABLE；同样执行 DBCC CHECKDB。

如果问题仍然存在，请与您的主要支持提供者联系。使 DBCC CHECKDB 语句的输出可查阅。

请参见

ALTER PROCEDURE

CREATE PROCEDURE

DBCC CHECKDB

DBCC CHECKTABLE

DROP PROCEDURE

错误 1 - 999

将错误报告给您的主要支持提供者

sysindexes


错误 605

严重级别 21
消息正文

试图从数据库 ''%2!'' 中提取的逻辑页 %1! 属于对象 ''%4!''，而非对象 ''%6!''。

解释

当 Microsoft® SQL Server™ 检测到数据库损坏时发生该错误。在文本而非对象 ''%6!'' 中指定的第二个对象可能损坏。因为该错误可以屏蔽其它错误的存在，所以请执行 DBCC CHECKDB 以确定损坏的程度。如果 DBCC CHECKDB 未报告其它错误，则提到的第一个对象未损坏。

当 SQL Server 遍历某对象的页并在链中找到其对象 ID 与被访问对象的 ID 不匹配的页时检测到数据库损坏。可能存在已损坏的页链、损坏的索引分配映射表 (IAM) 或 sysobjects 系统表中该对象的无效条目。聚集表具有一个表数据的双向链接的页链，每个索引级别也具有一个双向链接的页链。非聚集索引的每个索引级别具有一个页链。堆集中的页未链接。IAM 用于查找堆集的页。

尽管错误 605 通常显示两个对象名，但可以发生其它的变化：

  • 如果错误未显示对象名而显示大于 0 的数字，则表示试图引用该对象的系统表中不存在的对象 ID。

  • 如果错误报告第一个对象 ID 为 0，则可能遇到了一个未分配页。（不存在等于 0 的对象 ID。）

  • 如果错误指出属于对象 ALLOCATION 的页，则数据库使用的某些分配结构可能损坏了。

通常该错误在损坏已写入磁盘上的数据库之后发生，但它还可以在损坏尚未写入磁盘的情况下完全在高速缓存中发生。这称为暂时的 605 错误，且不与数据损坏相关联。如果错误 605 在数据访问期间发生，但后续的 DBCC CHECKDB 语句在没有出错的情况下完成，则 605 错误可能是暂时的。暂时的 605 错误可以由操作系统过早地通知 SQL Server 已完成某个 I/O 操作而引起；尽管不存在实际的数据损坏，但显示错误信息。

非暂时的 605 错误通常由硬件或磁盘设备驱动程序失败而引起。

对策

在错误信息中指定的第二个对象上执行 DBCC CHECKTABLE。若要确定损坏的完全程度，请尽快执行 DBCC CHECKDB。同时检查错误日志以确定是否有其它错误，经常有错误伴随 605 错误。

如果 605 错误不是暂时的，则问题很严重，必须运行带有一个修复子句的 DBCC CHECKDB。如果错误涉及索引页，请使用 REPAIR_REBUILD 子句。如果错误涉及数据页，可能需要使用 REPAIR_ALLOW_DATA_LOSS 子句。在不允许丢失数据的可能事件中，将需要从已知的干净备份进行还原。如果问题仍然存在，请与您的主要支持提供者联系。使 DBCC CHECKDB 的输出可查阅。

重要 如果运行带有一个修复子句的 DBCC CHECKDB 未更正索引问题，或不确定带有修复子句的 DBCC CHECKDB 对数据有何影响，则请与您的主要支持提供者联系。

此外，运行硬件诊断并更正问题。您可能发现在计算机上执行全新的安装（包括重新格式化磁盘驱动器和重新安装操作系统）十分有益。这消除了 .dll 或 .exe 程序损坏的可能性。还可以检查操作系统错误日志以查看错误的发生是否是硬件故障的结果。

最后，确保系统未在磁盘控制器上启用写入缓存。如果怀疑这是问题起因，请与您的硬件供应商联系。

其它信息

DBCC CHECKDB 提供 REPAIR_REBUILD 和 REPAIR_ALLOW_DATA_LOSS 子句。REPAIR_REBUILD 子句重建损坏的索引，而 REPAIR_ALLOW_DATA_LOSS 子句修复分配问题。有时，删除页是修复分配问题的唯一方法。通常，这些页包含已删除的数据，但它们可能包含有效数据。因此，删除页比使用带有修复子句的 DBCC CHECKDB 更危险。当无可用的数据库备份时使用带有修复子句的 DBCC CHECKDB 修复数据库损坏。

如果您的数据库是数据仓库，则可以在重新加载丢失的数据之前在没有所丢失数据的情况下继续操作一段时间。在这些情况下，使用带有 REPAIR_ALLOW_DATA_LOSS 子句的 DBCC CHECKDB 修复已损坏的数据库。

可以通过遵照下列准则来防止问题：

  1. 只在针对您的操作系统已验证的硬件和控制器中运行 SQL Server。

  2. 同 DBCC CHECKDB 语句一起执行常规备份。DBCC CHECKDB 执行 DBCC NEWALLOC 和 DBCC CHECKALLOC 以前执行的所有检查，但 DBCC CHECKDB 更快。这是确信数据库在备份时的状态的唯一方法。

  3. 如果数据十分重要，则经常备份事务日志。这可以将脆弱性时段减小到一个小时或更短，即使是在发生灾难性硬件问题的情况下。

  4. 在大多数重要情况下，使用备用服务器和连续运行的批处理作业从主计算机移走事务备份，并在备用计算机上连续进行还原。

  5. 如果不停地遇到数据损失问题，尝试将计算机、控制器和磁盘设备驱动程序交换为不同类型的组件。以便更容易地确定问题是否与特定的平台有关。

请参见

备份和还原数据库

BACKUP

错误 1 - 999

管理对象使用的空间

将错误报告给您的主要支持提供者

使用备用服务器


错误 624

严重级别 21
消息正文

未能从页中按 RID 检索行，因为所请求的 RID 比页中最后一个 RID 的数值还高。%1!。%2!、Dbid %3!。

解释

当试图通过指定行 ID (RID) 来从数据页检索行，因为所请求的 RID 数字比该页的最后一个 RID 大而失败时，发生该错误。如果损坏的非聚集索引的叶级页指向数据页上不正确的或不存在的 RID，则可能在普通处理中发生该错误。

如果当其他用户正在更新系统表（执行 DDL）时，在只读操作中在系统表上发生该错误，则它可能是暂时的 624 错误（而不是索引损坏）。若要确认无损坏，请执行不带修复子句的 DBCC CHECKTABLE。

对策

恢复过程视错误发生的时间而定。如果问题仍存在，则下列过程可能不足以清除索引损坏。在这种情况下，请与您的主要支持提供者联系。提供 DBCC CHECKTABLE（如果调查可能的系统表损坏）或 DBCC CHECKDB 的输出以便检查。

如果错误发生在普通处理过程中

执行带有 REPAIR_REBUILD 子句的 DBCC CHECKTABLE。如果执行带有 REPAIR_REBUILD 子句的 DBCC CHECKTABLE 未更正该问题，则除去并重新创建受影响的索引。

重要 如果执行带有 REPAIR_REBUILD 子句的 DBCC CHECKDB 未更正索引问题，或不确定带有 REPAIR_REBUILD 子句的 DBCC CHECKDB 对数据有何影响，则请与您的主要支持提供者联系。

索引未知、查询已知

解决该问题的最快方法是执行带有 REPAIR_REBUILD 子句的 DBCC CHECKDB。本操作修复整个数据库中的所有索引损坏。如果数据库太大因而不想运行 DBCC CHECKDB，则使用下列说明以找到要除去并重新创建的特定索引。

如果不知道哪个索引导致了问题但知道哪个查询遇到了问题，请遵照下列说明操作。如果索引或查询均未知，请遵照下一节"索引和查询均未知"中的说明操作。

  1. 通过读取遇到错误的查询的显示计划输出来确定应除去哪个索引。如果设置 SET SHOWPLAN_TEXT 为 ON、SET NOEXEC 为 ON，然后运行该查询，则输出指出查询使用哪个非聚集索引访问该表。

    例如：

    USE pubs
GO
SET SHOWPLAN_TEXT ON
GO
SET NOEXEC ON
GO
SELECT title
FROM titles
WHERE title > 'Cooking'
GO

    下面是结果集：

    StmtText
----------------
SET NOEXEC ON

(1 row(s) affected)

StmtText
-------------------------------------------------------
SELECT title
FROM titles
WHERE title > 'Cooking'

(1 row(s) affected)

StmtText
---------------------------------------------------------------------
  |--Index Seek(pubs..titles.titleind, SEEK:(titles.title > @1) ORDERED)

(1 row(s) affected)
  2. 再次设置 SET NOEXEC 为 OFF、SET SHOWPLAN_TEXT 为 OFF：
    SET NOEXEC OFF
GO
SET SHOWPLAN_TEXT OFF
GO
  3. 除去并重新创建步骤 1 中标识的索引（本例中为 titleind）。
索引和查询均未知

如果索引和查询均未知，则重建表中的所有非聚集索引，如下所示：

  1. 当获得表名时查看使用 DBCC CHECKDB 创建的输出：
    • 如果对象 ID 小于 100，则无法除去可重新创建索引。请不要继续步骤 2 或 3。必须从某个已知的清洁备份还原数据库。

    • 如果对象 ID 为 100 或更大，则继续进行步骤 2。
  2. 使用 sp_helpindex 列出表中的所有索引，然后使用下列方法之一重建所有非聚集索引：
    • 除去并重新创建表中的每个非聚集索引。

    • 如果表具有聚集索引，则除去并重新创建该索引。这使得所有非聚集索引自动重建。如果您的表较大，则可能没有进行此操作的空间。通常，可用的空间必须为表大小的 1.2 倍。
  3. 在重新创建了适当的索引之后，在表上运行 DBCC CHECKTABLE 以确认问题已解决。

请参见

DBCC CHECKDB

DBCC CHECKTABLE

错误 1 - 999

将错误报告给您的主要支持提供者

重置置疑状态

SET NOEXEC

SET SHOWPLAN_TEXT

sp_helpindex


错误 625

严重级别 21
消息正文

无法从页 %1! 中按 RID 检索行，因为 slotid (%2!) 无效。

解释

当该行所属的对象出错时发生该错误。在从该逻辑页读取特定行的过程中检测到此问题。该错误的起因可能为：

  • 硬件问题，尤其是硬盘驱动器、控制器或硬件写入缓存的问题。

  • 数据库中的其它错误。
对策

执行 DBCC CHECKDB 以确定错误的完全程度。同时检查错误日志以确定是否有其它错误，经常有错误（如 25xx 消息）伴随该错误。

如果 DBCC CHECKDB 发出其它错误信息，首先解决这些消息可能有助于解决该错误。执行带有 REPAIR_REBUILD 子句的 DBCC CHECKDB 以修复损坏。

重要 如果执行带有 REPAIR_REBUILD 子句的 DBCC CHECKDB 未更正索引问题，或不确定带有 REPAIR_REBUILD 子句的 DBCC CHECKDB 对数据有何影响，则请与您的主要支持提供者联系。

如果执行带有 REPAIR_REBUILD 子句的 DBCC CHECKDB 未解决所有表错误问题，则通过检查错误信息中的页来确定哪个表受到了影响。如果该页与某个索引相关联，则通过除去并重新创建该索引可能解决问题。如果该页是数据页并且有可用的当前清洁备份，则从备份还原数据库。

如果无可用的备份，则将该表选中并复制到另一个表或从该表大容量复制数据，除去并重新创建该表，然后将数据选中并复制回该表。

如果怀疑有硬件问题，则运行硬件诊断并更正问题。您可能发现在计算机上执行全新的安装（包括重新格式化磁盘驱动器和重新安装操作系统）十分有益。同时检查 Microsoft® Windows NT® 应用程序日志以查看错误是否由硬件故障引起。

最后，确保系统未在磁盘控制器上启用写入缓存。如果怀疑这是问题起因，请与您的硬件供应商联系。

请参见

BACKUP

DBCC CHECKDB

错误 1 - 999


错误 644

严重级别 21
消息正文

未能在索引页 %3! 中找到 RID ''%1!'' 的索引条目（索引 ID %4!、数据库 ''%5!''）。

解释

当索引 ID 表示的非聚集索引出错时发生该错误。当进程试图删除不存在的行时检测到该损坏。

对策

执行不带修复子句的 DBCC CHECKDB 以确定损坏的程度。然后，执行带有 REPAIR_REBUILD 子句的 DBCC CHECKDB 以更正损坏。如果问题仍存在，则除去并重新创建该索引（如下所示），或与您的主要支持提供者联系。

重要 如果执行带有 REPAIR_REBUILD 子句的 DBCC CHECKDB 未更正索引问题，或不确定带有 REPAIR_REBUILD 子句的 DBCC CHECKDB 对数据有何影响，则请与您的主要支持提供者联系。

除去并重新创建索引：

  1. 记录错误文本中指定的索引页和索引 ID 的值。

  2. 确定哪个表和索引对应于该索引页号。

  3. 记下对象 ID。

    如果有错的对象是系统表（对象 ID 小于 100），则无法除去该索引。执行带有 REPAIR_REBUILD 子句的 DBCC CHECKDB 或从已知的清洁备份还原数据库。

  4. 如果对象 ID 大于 100，则使用第 1 步中获得的表名和索引名称除去并重新创建该索引。在大多数情况下，这将清除该错误。

  5. 在受影响的数据库上执行带有 REPAIR_REBUILD 子句的 DBCC CHECKDB，以验证已解决所有问题。

如果问题仍存在，则该过程可能不足以清除索引错误。在这种情况下，请与您的主要支持提供者联系。使 DBCC CHECKDB 的输出可查阅。

请参见

CREATE INDEX

DBCC CHECKDB

DROP INDEX

错误 1 - 999

将错误报告给您的主要支持提供者


错误 701

严重级别 19
消息正文

没有足够的系统内存来运行此查询。

解释

Microsoft® SQL Server™ 试图执行的任务集的内存要求超出可用内存量。增加服务器内存量或减小服务器工作负荷。

对策

若要减少服务器的工作负荷，请减少当前使用 SQL Server 的用户数。若要防止其他用户登录到 SQL Server，请暂停服务器。有关更多信息，请参见暂停和继续执行 SQL Server。

增加服务器内存：

  1. 检查 min server memory (MB) 和 max server memory (MB) 的设置。

    如果 max server memory (MB) 的值接近 min server memory (MB) 的值，则增加 max server memory (MB) 值。

  2. 检查虚拟内存换页文件的大小。

    如果可能，增加该文件的大小。

  3. 如果可以，关闭服务器上运行的其它应用程序。

  4. 查看 Windows NT 性能监视器中的当前内存使用信息。

    若要查看当前内存使用信息以为调整内存配置作准备，请使用 SQLServer:常规统计对象的服务器总内存 (KB) 性能监视器计数器。

  5. 向服务器添加更多的内存。

请参见

错误 1 - 999

设计存储过程

服务器内存选项

SQL Server:General Statistics 对象


错误 813

严重级别 20
消息正文

已对数据库 ID %2! 中的逻辑页 %1! 进行了哈希运算。

解释

当 Microsoft® SQL Server™ 试图对数据库 ID%d 中的逻辑页 %S_PGID 进行哈希运算而该页已经在 SQL Server 哈希表内时发生该错误。

该错误通常作为其它数据错误的副作用发生，这些错误通常可通过执行不带修复子句的 DBCC CHECKDB 检测到。

对策

检查 SQL Server 错误日志，然后在数据库上执行带有适当的修复子句的 DBCC CHECKDB。如果错误涉及索引页，请使用 REPAIR_REBUILD 子句。如果错误涉及数据页，可能需要使用 REPAIR_ALLOW_DATA_LOSS 子句。在不允许丢失数据的可能事件中，将需要从已知的干净备份进行还原。如果问题仍然存在，请与您的主要支持提供者联系。使 DBCC CHECKDB 的输出可查阅。

重要 如果执行带有修复子句之一的 DBCC CHECKDB 未更正索引问题，或者您不确定带有修复子句的 DBCC CHECKDB 对数据的作用，请与您的主要支持提供者联系。

向您的硬件供应商验证 SQL Server 使用的磁盘子系统处于当前支持的和建议的固件和硬件级别。

如果 DBCC CHECKDB 未找到错误，或因找到并更正了错误而使后续的 DBCC 语句指出无错误，但该错误重新出现，则请与您的主要支持提供者联系。提供 SQL Server 错误日志以及 DBCC CHECKDB 和 sp_configure 的输出以便检查。

请参见

DBCC CHECKALLOC

DBCC CHECKDB

错误 1 - 999

将错误报告给您的主要支持提供者

设置配置选项

sp_configure


错误 822

严重级别 21
消息正文

未能为请求 %1! 启动 I/O。

解释

当 Microsoft® SQL Server™ 试图启动读取或写入请求时遇到错误。该错误的起因可以是下列原因之一：

  • 某数据库文件脱机。

  • 某数据库文件已删除或重命名。

  • 某数据库文件由于其它原因（如没有足够的权限）而不可访问。

错误信息中的参数指的是内部结构，无助于确定所涉及的数据库文件。但是，出现在错误日志中的、错误 822 紧前面的其它错误信息通常指出了所涉及的文件。

对策

使用标准操作系统过程检查所涉及文件的可用性和状态，确保文件可访问。

因为错误 822 将数据库标记为置疑，所以 SQL Server 无法在重新启动时恢复数据库。如果您知道数据库因为文件不可用而标记为置疑，则可以重置数据库的状态，以允许恢复继续。

注意 如果错误日志中错误 822 消息附近有其它错误，说明数据库可能由于其它原因而标记为置疑，则请不要使用这些过程。

执行 sp_resetstatus 重置置疑状态。这是最安全的方法。执行 sp_resetstatus 之后，重新启动 SQL Server。

这里有来自日志的错误 822 和相关联消息的两个例子。检查错误 822 紧前面的错误信息通常有助于确定问题的类型。

设备丢失

在本示例中，当 SQL Server 启动时设备 C:\Mssql7\data\mydb_data.mdf 不存在，导致对该设备的访问失败：

kernel   udopen: Operating system error 2(The system cannot find the file specified.) during the creation/opening of physical device C:\MSSQL7\data\mydb_Data.MDF.
kernel   FCB::Open failed: Could not open device C:\MSSQL7\data\mydb_Data.MDF for virtual device number (VDN) 1.
spid9    Device activation error. The physical file name 'C:\MSSQL7\data\mydb_Data.MDF' may be incorrect.

若要更正这类错误，请确保出现在错误信息中的虚拟设备存在，并更正妨碍 SQL Server 找到它的任何错误。例如，当 SQL Server 未运行时它可能被重命名或移走。

如果虚拟设备不再存在，则必须从已知的清洁备份还原。仅仅创建具有正确名称的空设备不会解决该问题。

权限问题

如果设备位于 NTFS 分区则可能发生权限问题。

在本示例中，C:\Mssql7\Data\Mydb_DATA.Mdf 上的权限不正确，因而 SQL Server 无法访问它：

kernel   udopen: Operating system error 2(The system cannot find the file specified.) during the creation/opening of physical device C:\MSSQL7\data\mydb_Data.MDF.
kernel: dopen: open "c:\mssql7\data\mydb_data.mdf", Permission denied
kernel   FCB::Open failed: Could not open device C:\MSSQL7\data\mydb_Data.MDF for virtual device number (VDN) 1.
spid9    Device activation error. The physical file name 'C:\MSSQL7\data\mydb_Data.MDF' may be incorrect.

若要更正这类错误，请将设备的对象所有权更改为管理员，并确保启动 SQL Server 所用帐户具有对象上的读和写权限。

请参见

BEGIN TRANSACTION

CHECKPOINT

错误 1 - 999

RECONFIGURE

重置置疑状态

设置配置选项

设置数据库选项

SHUTDOWN

sp_configure

sp_dboption

UPDATE


错误 823

严重级别 24
消息正文

在文件 ''%4!'' 的偏移量 %3! 处的 %2! 过程中，检测到 I/O 错误 %1!。

解释

Microsoft® SQL Server™ 在对某设备进行读或写请求时遇到 I/O 错误。该错误通常表明磁盘问题。但是，错误日志中在错误 823 之前记录的其它核心消息应指出涉及了哪个设备。

对策

检查该设备的可访问性和状态。

如果可能，执行硬件诊断并纠正问题。

从最新的数据库备份还原损坏的文件。从数据库备份中还原应始终是修复已损坏数据库的首选方法。

如果没有备份或者检测到的错误是孤立的，则 DBCC CHECKDB 的修复功能可能很有用。然而，比起从备份中还原损坏的文件，可能使用 DBCC CHECKDB 消耗的时间更多，且可能无法恢复全部数据。

注意 如果使用修复子句运行 DBCC CHECKDB 时，问题没有得到纠正，或者不知道该过程将如何影响数据，请与主要的支持提供者联系。

请参见

RESTORE

DBCC CHECKDB

错误 1 - 999


错误 844

严重级别 10
消息正文

等待缓冲区闩锁时发生超时，类型 %1!，bp %2!，页 %3!，stat %4!，对象 ID %5!:%6!:%7!，waittime %8!。将继续等待。

解释

当处于繁重负荷或高 I/O 状态时，系统可能产生该消息。

对策

该消息通常可忽略。但是，如果在等待时间增加处收到重复的消息，则可能表示内部服务器问题。在这种情况下，请与系统管理员联系。系统管理员应检查 sysprocesses 的 waittype、waittime、lastwaittype 和 waitresource 列，以便查看每个 SPID 在执行什么活动。

请参见

错误 1 - 999

sysprocesses


错误 845

严重级别 17
消息正文

等待缓冲区闩锁时发生超时，类型 %1!，用于页 %2!，数据库 ID %3!。

解释

当处于繁重负荷或高 I/O 状态时，系统可能产生该消息。

对策

该消息通常可以忽略；但如果在等待时间增加处收到重复消息，则可能表示内部服务器问题。请与系统管理员联系。系统管理员应检查 sysprocesses 的 waittype、waittime、lastwaittype 和 waitresource 列，以查看每个 SPID 所执行的活动。

请参见

错误 1 - 999

sysprocesses


错误 911

严重级别 16
消息正文

未能在数据库 "%1!" 的 sysdatabases 中找到条目。未找到具有该名称的条目。请确保正确地输入了名称。

解释

当试图将数据库上下文更改（使用 USE 语句）为不存在的数据库时，或当为登录建立的默认数据库不存在时，发生该错误。在后一种情况下，用户登录接着试图访问 master 数据库。

对策

若要获得数据库的列表，请执行 sp_helpdb 或发出以下查询：

SELECT name
FROM master..sysdatabases

所返回的列表将包含 Microsoft® SQL Server™ 安装中存在的数据库。创建缺少的数据库或连接到现有的数据库。若要更正登录级别的错误，可能有必要执行 sp_defaultdb。

请参见

错误 1 - 999

sp_defaultdb

sp_helpdb

sysdatabases

USE


错误 913

严重级别 22
消息正文

未能找到 ID 为 %1! 的数据库。可能该数据库尚未激活，也可能正在转换过程中。

解释

如果视图解析进程有问题则可能发生该错误。在引用 dbid 数据库的数据库中执行各种编译对象（如存储过程和视图）的过程中，通常用该数据库内的其它结构解析 dbid。当第一次创建某个编译对象时，对象位于的 dbid 嵌入编译代码。例如，当访问某视图或执行某存储过程时，将检查访问视图或执行存储过程的权限。

对策

如果当访问某存储过程或视图时发生该错误，则通过简单地除去并重新创建此数据库对象（存储过程或视图）即有可能更正问题。

如果该错误继续发生，请与您的主要支持提供者联系，并提供 Microsoft® SQL Server™ 错误日志和与错误发生时的情况有关的任何其它信息以便检查。

请参见

CREATE PROCEDURE

CREATE VIEW

DROP PROCEDURE

DROP VIEW

错误 1 - 999

将错误报告给您的主要支持提供者


错误 924

严重级别 14
消息正文

数据库 ''%1!'' 已打开，并且同一时刻只能有一个用户。

解释

当试图访问已由另一个用户或会话使用的数据库时发生该错误。Microsoft® SQL Server™ 检测到试图访问单用户模式下的数据库的操作。

对策

通过执行以下查询（用您的数据库名称代替 <database>）来验证该数据库实际在单用户模式下。

sp_helpdb <database>
GO

如果数据库确实在单用户模式下，则 status 结果集列标题会将单个用户列为访问模式。

若要查看哪个登录正在访问数据库，请执行 sp_who 并为指定数据库扫描 dbname 结果集列标题。

如果单用户模式特权是问题所在，请与您的系统管理员联系，请求将单用户模式数据库选项设置为多用户。系统管理员可以通过从 master 数据库执行 sp_dboption 来完成此设置，如下所示：

sp_dboption database, 'single user', false

请参见

错误 1 - 999

设置数据库选项

sp_dboption

sp_helpdb

sp_who


错误 926

严重级别 14
消息正文

无法打开数据库 ''%1!''。恢复操作已将该数据库标记为 SUSPECT。更多信息请参见 SQL Server 错误日志。

解释

数据库之所以标记为置疑是因为它的恢复进程失败，该进程使数据库进入一致事务状态。这可能在下列操作中发生：

  • 启动 Microsoft® SQL Server™ 2000 实例。

  • 附加数据库。

  • 使用 RESTORE 数据库或 RESTORE LOG 过程。
对策

检查 Microsoft SQL Server 错误日志并确定错误起因。如果 SQL Server 在恢复失败后已重新启动，则查看以前的 SQL Server 错误日志以确定恢复失败的原因。

如果恢复失败是因为持续的 I/O 错误、残缺页或其它可能的硬件问题，则解决潜在的硬件问题并使用备份还原数据库。如果无可用备份，则考虑 DBCC CHECKDB 的修复选项。

如果无法解决该问题，请与您的主要支持提供者联系。提供 SQL Server 错误日志以便检查。

请参见

备份和还原数据库

错误 1 - 999

将错误报告给您的主要支持提供者

重置置疑状态

RESTORE

sysdatabases


错误 945

严重级别 16
消息正文

由于文件不可访问，或者内存或磁盘空间不足，所以无法打开数据库 ''%1!''。详细信息请参见 SQL Server 错误日志。

解释

当数据库标记为 IsShutdown 时返回错误 945。当由于丢失文件或某些其它资源错误（这些错误的更正通常比较容易）而无法恢复数据库时，发生该错误。

对策

首先，使用 DATABASEPROPERTY 验证数据库是否标记为 IsShutdown。

然后，通过查阅错误日志确定错误的起因，并采取下列对策。

如果一个或多个数据或日志文件丢失：
  1. 使这些文件可用，并使用 ALTER DATABASE 使数据库 OFFLINE（脱机）。

  2. 使用 ALTER DATABASE 以使数据库 ONLINE（联机）
如果日志空间不足：
  • 使用 sp_add_log_file_recover_suspect_db() 添加其它的日志文件。

该过程恢复数据库并使其联机。

如果数据空间不足：
  • 使用 sp_add_data_file_recover_suspect_db() 添加其它的日志文件。

该过程恢复数据库并使其联机。

如果内存不足：

当同时恢复许多数据库时可能发生内存不足错误。重试该操作可能修复问题：

  1. 重试操作，使用 ALTER DATABASE 以使数据库 OFFLINE。

  2. 使用 ALTER DATABASE 以使数据库 ONLINE。

如果重试操作不起作用，则考虑释放内存。

请参见

DATABASEPROPERTY


错误 1002

严重级别 16
消息正文

第 %1! 行：指定的小数位数 %2! 无效。

解释

当 decimal 或 numeric 列的小数位数未在允许的最大值和最小值（基于该列的精度）范围内，发生该错误。

对策

使用 p 指定精度（必须在 1 和最大精度之间），而使用 s 指定小数位数（必须在 0 和 p 之间）。如果未指定精度，则 Microsoft® SQL Server™ 使用默认精度 18。如果未指定小数位数，则 SQL Server 使用默认小数位数 0。有关更多信息，请参见 decimal 和 numeric 主题和精度、小数位数和长度。


错误 1105

严重级别 17
消息正文

未能为数据库 ''%3!'' 中的对象 ''%1!'' 分配空间，因为文件组 ''%5!'' 已满。

解释

指定的文件组可用空间已用完。

对策

若要获得更多空间，可以释放包含完整文件组中的某个文件的任何磁盘驱动器上的磁盘空间，以允许组中的文件增长。或者可以将某数据文件用于指定的数据库来获得空间。

释放磁盘空间

可以释放本地驱动器或另一个磁盘驱动器上的可用磁盘空间。释放另一个驱动器上的可用磁盘空间：

  1. 将可用磁盘空间不足的文件组中的数据文件移动到另一个磁盘驱动器中。

  2. 执行 sp_detach_db 分离数据库。

  3. 执行 sp_attach_db 附加数据库，指向被移动的文件。
使用数据文件

另一种解决方案是使用 ALTER DATABASE 语句的 ADD FILE 子句向指定的数据库添加数据文件。或者可以使用 ALTER DATABASE 语句的 MODIFY FILE 子句、指定 SIZE 和 MAXSIZE 语法来扩大数据文件。

请参见

ALTER DATABASE

错误 1000 - 1999

扩充数据库

磁盘空间不足

sp_attach_db

sp_detach_db

sp_add_data_file_recover_suspect_db


错误 1203

严重级别 20
消息正文

进程 ID %1! 试图解锁不属于该进程的资源 %2!。

解释

当 Microsoft® SQL Server™ 忙于进行除普通处理后清除以外的某些活动，并发现其试图解锁的特定页已经解锁时，发生该错误。该错误的潜在起因可能与受影响数据库内的结构问题有关。SQL Server 管理页的获取和释放，以维护多用户环境中的并发控制。该机制通过使用各种内部锁结构进行维护，这些结构标识页和存在的锁的类型。为处理受影响的页而获取锁，并在处理完成时释放锁。

对策

对对象所属的数据库执行 DBCC CHECKDB。如果 DBCC CHECKDB 报告无错，则尝试重新建立连接并执行该命令。

重要 如果执行带有修复子句之一的 DBCC CHECKDB 未更正索引问题，或不确定带有修复子句的 DBCC CHECKDB 对数据有何影响，则请与您的主要支持提供者联系。

请参见

DBCC CHECKDB

错误 1000 - 1999

将错误报告给您的主要支持提供者


错误 1204

严重级别 19
消息正文

SQL Server 此时无法获取 LOCK 资源。请在活动用户数较少时重新运行您的语句，或者请求系统管理员检查 SQL Server 锁和内存配置。

解释

当没有足够的系统锁来完成当前命令时发生该错误。SQL Server 接着试图获得 LOCK 块来代表和控制所需的锁。当动态配置时，锁限制由可用内存决定。当静态配置时，锁限制由 sp_configure 设置决定。

如果持续遇到该问题，则请确保您的统计信息是最新的，您具有足够的索引来有效运行查询，以及应用程序的事务隔离级别限制不过分。

对策

当服务器上的活动较少时再次执行该命令，或让系统管理员通过从 master 数据库执行 sp_configure 来增加锁的数目。

查看当前的配置：

sp_configure locks
GO

这报告最小值、最大值、当前运行值和配置值。若要增加锁的数目，请再次运行 sp_configure，指定要配置的锁的数目。例如，配置 10,000 个锁：

sp_configure locks, 10000
GO
RECONFIGURE WITH OVERRIDE
GO

停止并重新启动 Microsoft® SQL Server™，以便更改生效。在系统启动时分配锁。

如果锁的数目当前无法增加，并且单个操作要求的锁的数目多于服务器当前配置的数目，则可以减少该操作要求的锁的数目。例如，尝试下列操作：

  • 对于较大的 UPDATE 语句，将更新划分为较小的单元，这些单元一次将只影响记录的一个子集。例如，可以使用主键，将单个 UPDATE 语句：
    UPDATE employees
SET salary = salary * 1.05
WHERE employee_id BETWEEN 1000 AND 9999
GO

更改为几个 UPDATE 语句：

UPDATE employees
SET salary = salary * 1.05
WHERE employee_id BETWEEN 1000 AND 4999
GO
UPDATE employees
SET salary = salary * 1.05
WHERE employee_id BETWEEN 5000 AND 9999
GO
  • 对于维护类型的任务或全局更新，考虑将数据库置于单用户模式（如果使其他用户不能使用数据库可行的话）。单用户模式不设置锁，因而锁不会用完，并且操作运行地更快一些（因为节省了锁定开销）。

  • 对于大容量复制操作，整个操作视为单个事务。当使用批处理参数 (-b) 时，bcp 实用工具将此操作处理为几个小事务，每个事务具有指定的行数。在每个小事务结束时，释放该事务控制的系统资源，因而需要的锁较少。

请参见

了解和避免阻塞

bcp 实用工具

BULK INSERT

错误 1000 - 1999

设置配置选项

sp_configure

启动、暂停和停止 SQL Server

UPDATE


错误 1205

严重级别 13
消息正文

事务（进程 ID %1!）与另一个进程已被死锁在资源 {%2!} 上，且该事务已被选作死锁牺牲品。请重新运行该事务。

解释

当 Microsoft® SQL Server™ 遇到死锁时发生该错误。当两个（或多个）进程试图访问某个资源，而该资源上有另一个进程控制的锁时，发生死锁。因为每个进程都有对另一个资源的请求，所以各进程都不能完成。当检测到死锁时，SQL Server 将处理时间最少的命令回滚，并向客户端应用程序返回错误信息 1205。该错误不是严重错误，且不会导致批处理终止。

对策

在某些情况下，死锁条件将导致 DB-Library 函数（如 dbsqlexec、dbsqlok、dbresults 或 dbnextrow）返回 FAIL。程序应该始终检查从每个 DB-Library 函数返回的代码。如果这些 DB-Library 函数之一返回 FAIL，则程序应取消批处理并停止运行。在某些情况下，继续执行批处理中的后续函数是有可能的。但是，因为发生了死锁情况并且回滚了引起死锁的函数，所以批处理中的后续函数将可能因更严重的错误（如"没有找到对象"）而失败。

在其它情况下，死锁条件不会导致 DB-Library 函数返回 FAIL。在这些情况下，程序必须在消息处理程序中检查是否有错误信息 1205，并使用 dbsetuserdata 函数将此信息告知应用程序。然后程序必须在每个 DB-Library 调用之后检查是否有死锁指示符，如果检测到死锁则应取消批处理。

尽管在收到 1205 死锁消息后取消批处理可能似乎没有必要，但因为服务器并不总是终止死锁情况下的批处理，所以这确实必要。如果未取消批处理，则任何时候试图提交新的批处理时均将导致 DB-Library 错误 10038"结果挂起"。

还可以使用 SET DEADLOCK_PRIORITY 语句（LOW 或 NORMAL）。SET DEADLOCK_PRIORITY 控制在发生死锁情况时会话的反应方式。如果设置为 LOW，则进程将成为死锁情况下的首选牺牲品。如果设置为 NORMAL，则会话将使用默认的死锁处理方法。

如果死锁情况持续，则使用跟踪标记 1204 收集更多信息通常很有用。跟踪标记 1204 打印死锁链和牺牲品，如以下示例输出所示：

*** Deadlock Detected ***
 ==> Process 7 chosen as deadlock victim
 == Deadlock Detected at: 1998-09-10 16:39:29.17
 == Session participant information:
 SPID: 7 ECID: 0 Statement Type: UPDATE
 Input Buf: update t1 set c1 = c1  where  c1 = 2

 SPID: 8 ECID: 0 Statement Type: UPDATE
 Input Buf: update t1 set c1 = c1  where  c1 = 1

 == Deadlock Lock participant information:
 == Lock: KEY: 2:117575457:1 (010001000000)
 Database: tempdb
 Table: t1
 Index: i1
  - Held by: SPID 7 ECID 0 Mode "S"
  - Requested by: SPID 8 ECID 0 Mode "X"
 == Lock: KEY: 2:117575457:1 (020002000000)
 Database: tempdb
 Table: t1
 Index: i1
  - Held by: SPID 8 ECID 0 Mode "S"
  - Requested by: SPID 7 ECID 0 Mode "X"

此死锁信息可以解释如下：

  • 第一部分显示死锁牺牲品、死锁时间以及死锁中涉及的会话。对于每个会话，显示当前的 SPID、语句类型和输入缓冲区的一部分。

  • 第二部分显示有关死锁中涉及的锁的详细信息。从上面的输出，注意死锁涉及表 t1（索引 i1）上的键锁。死锁输出显示哪些进程拥有死锁中涉及的锁，哪些会话在等待锁被授权以及相关联的锁模式。

  • 根据默认，生成最小日志量的进程将选作死锁牺牲品，并自动回滚。若要影响所回滚的会话，请为会话设置 DEADLOCK_PRIORITY。

请参见

死锁

错误 1000 - 1999

SET DEADLOCK_PRIORITY

跟踪标记


错误 1505

严重级别 14
消息正文

CREATE UNIQUE INDEX 终止，因为发现了索引 ID %1! 的重复键。最重要的主键为 ''%2!''。

解释

当试图创建唯一索引而不止一行包含重复值时发生该错误。Microsoft® SQL Server™ 检测到违反了唯一性规定，取消了 CREATE INDEX 操作。

例如，下列索引的创建将由于行 3 处违反了唯一性规定而取消。BUCHANAN STEVEN 组合已经位于行 1 中。

TABLE:     tblTest
Row      strLastName     strFirstName    strCity        strState
1        BUCHANAN        STEVEN          BOISE          ID
2        SUYAMA          MICHAEL         BUTTE          MT
3        BUCHANAN        STEVEN          SEATTLE        WA
4        DAVOLIO         NANCY           SAN FRANCISCO  CA

CREATE UNIQUE NONCLUSTERED INDEX
idxUniqueNames ON
tblText(strLastName, strFirstName)
对策

必须检查索引目的。如果您的索引不需要唯一，则删除 UNIQUE 关键字并重新发出 CREATE INDEX 语句。但是，如果您仍希望创建唯一索引，则必须查询该表并删除出错的行。有关 CREATE INDEX 语句的更多信息，请参见 CREATE INDEX。

若要查找重复的行，请发出 GROUP BY 语句：

SELECT * FROM tblTest
GROUP BY strLastName, strFirstName

请参见

错误 1000 - 1999

SELECT


错误 1508

严重级别 14
消息正文

"由于发现重复行，CREATE INDEX 已终止。主键为 ''%1!''。"

解释

当试图创建聚集索引而在表中遇到重复的行时发生该错误。

下面的示例当索引创建进程到达行 3（该行是行 1 的完全重复）时产生错误 1508：

TABLE:     tblTest
Row      strLastName     strFirstName    strCity        strState
1        BUCHANAN        STEVEN          BOISE          ID
2        SUYAMA          MICHAEL         BUTTE          MT
3        BUCHANAN        STEVEN          BOISE          ID
4        DAVOLIO         NANCY           SAN FRANCISCO  CA

CREATE CLUSTERED INDEX
idxClusteredName ON
tblText(strLastName)
对策

必须决定是允许还是防止表中出现重复行。若要允许重复的行，应向 CREATE INDEX 语句添加 ALLOW_DUP_ROW 关键字。当使用 IGNORE_DUP_ROW 时请谨慎，因为它从表中物理删除重复的数据。还请注意当创建聚集索引时，所需的空间量可能为原始表大小的 120% 到 150%。有关详细信息，请参见 CREATE INDEX。

以下示例创建聚集索引，同时允许重复的行保留在表中：

CREATE CLUSTERED INDEX
idxClusteredName ON
tblText(strLastName)
WITH ALLOW_DUP_ROW

请参见

错误 1000 - 1999

SELECT


错误 1510

严重级别 17
消息正文

排序失败。数据库 ''%1!'' 中的空间或锁已用尽。

解释

当试图创建索引而数据库中没有足够的空间来完成该操作或当前没有可用的锁时，发生该错误。

当生成聚集索引时，创建索引可能需要原始表大小的 1.2 倍（该空间量是除处理 CREATE INDEX 语句时的表大小以外的空间量）。在指定的数据库或试图在其上创建索引的段中必须有该数量的空间。

对策

当数据库中没有足够的空间时，可能可以选择特定的文件组，将索引放置在该文件组上。若要找到特定的文件组并检查文件组中可用的大小，请执行 sp_helpfilegroup：

sp_helpfilegroup 'PRIMARY'

或使用 ALTER DATABASE 语句来增加数据库总的大小。请注意在增加数据库大小之后，可能不允许减小该大小。有关创建和扩展文件或文件组以及更改或移动数据库的更多信息，请参见 ALTER DATABASE。

如果数据库不再有可用的锁，则执行 sp_configure 以增加锁的数目。本示例将锁的数量增加到 10,000：

sp_configure 'locks', 10000
GO
RECONFIGURE
GO

为使配置选项生效，请停止并重新启动 Microsoft® SQL Server™ 服务。为了用户方便，可能希望暂停服务并允许当前的用户活动在正式停止服务之前顺利地完成。有关启动、暂停和停止 SQL Server 服务的更多信息，请参见启动、暂停和停止 SQL Server。

请参见

CREATE INDEX

错误 1000 - 1999

设置配置选项

sp_configure

sp_helpfilegroup


错误 1530

严重级别 16
消息正文

终止了带有 DROP_EXISTING 的 CREATE INDEX 语句，因为某一行次序有误。最重要的有问题主键为 ''%1!''。请改为显式除去并创建索引。

解释

当试图在包含未排序的数据的一个或一些列上使用 CREATE INDEX 语句的 DROP_EXISTING 子句创建索引时，发生该错误。当发生该错误时，不创建任何索引。

当表中的数据已经按顺序排列时，DROP_EXISTING 子句加快索引的创建。当使用 DROP_EXISTING 子句时，生成聚集索引所需的空间较小。

DROP_EXISTING 子句只加快聚集索引或唯一非聚集索引的索引创建。使用 DROP_EXISTING 子句创建非唯一、非聚集索引可能会成功，但性能无改善。

对策

使用以下策略之一：

  • 执行带有 DROP_EXISTING 子句的 CREATE INDEX。

  • 除去索引并在不带任何子句的情况下重新创建索引。

还可以使用 SORTED_DATA_REORG 子句，该子句在物理上重新组织数据。

请参见

CREATE INDEX

错误 1000 - 1999


错误 1702

严重级别 16
消息正文

CREATE TABLE 失败，因为表 ''%3!'' 中的列 ''%1!'' 超过了列数目的最大值 %5!。

解释

当试图创建带有多于 1,024 个列的表时生成该错误。每个表可定义列的最大数目为 1,024。

列名必须符合标识符规则。它们在给定表内必须唯一，但可以在相同数据库的不同表中使用相同的列名。

对策

将表中列的数目减少到 1,024 或更少。有关创建表的更多信息，请参见 CREATE TABLE。

请参见

错误 1000 - 1999

最大容量说明

使用标识符


错误 1803

严重级别 17
消息正文

CREATE DATABASE 失败。未能在指定的磁盘上为新数据库分配足够的磁盘空间。所分配的空间总大小必须至少为 %1! MB 时，才能容纳 model 数据库的一份复本。

解释

当设备上没有足够空间来创建 tempdb 数据库时发生该错误。

对策

处理该错误的过程视错误是发生在用户数据库上还是发生在 tempdb 上而定。

如果错误发生在用户数据库上
  • 在另一个磁盘上创建该数据库。

    或

  • 删除某些文件以释放磁盘上的空间。
如果错误发生在 tempdb 上

如果从一个设备将 tempdb 移回任何默认设备，而在该设备上没有足够空间 (2 MB)，则 Microsoft® SQL Server™ 将尝试在另一个设备上创建 tempdb。如果没有至少有 2 MB 可用空间的设备，则 SQL Server 不会启动。使用 -f 最小配置选项启动 SQL Server。

可以在设备上至少释放 2 MB，或创建至少有 2 MB 的新设备。如果创建新的设备，则确保将它指定为默认设备，如下例所示：

sp_diskdefault new_device_name, defaulton

如果未指定默认设备，则 SQL Server 发送"内存不足"消息（可以忽略该消息），然后自动将 tempdb 移动到 RAM。

请参见

错误 1000 - 1999

sqlservr 应用程序


错误 1814

严重级别 10
消息正文

未能创建 tempdb。如果空间太少，请扩展空间容量后重新启动。

解释

当设备上没有足够空间来创建 tempdb 数据库时发生该错误。

对策

可以在设备上至少释放 2 MB，或创建至少有 2 MB 的新设备。如果创建新的设备，则确保将它指定为默认设备，如下例所示：

sp_diskdefault new_device_name, defaulton

如果未指定默认设备，则 Microsoft® SQL Server™ 发送"内存不足"消息（可以忽略该消息），然后自动将 tempdb 移动到 RAM。

请参见

错误 1000 - 1999


错误 1902

严重级别 16
消息正文

不能在表 ''%1!'' 上创建多个聚集索引。请在创建新聚集索引前除去现有的聚集索引 ''%3!''。

解释

当某个表只可以有一个聚集索引，而可以有许多非聚集索引时，发生该错误。Microsoft® SQL Server™ 使用聚集索引对行排序，以便其物理顺序与逻辑（索引）顺序相同。聚集索引的底部（叶级）包含表的实际数据页。

在非聚集索引中，行的物理顺序与索引顺序不同。在非聚集索引中，底部（叶级）包含指向数据页中的行的指针，这在索引结构和数据本身之间创建了一个附加级别。

对策

使用 sp_helpindex 系统存储过程来检查表中的现有索引。如果聚集索引已经存在，则在创建另一个聚集索引之前必须除去该索引。

请参见

CREATE INDEX

错误 1000 - 1999

sp_helpindex


错误 1903

严重级别 16
消息正文

索引键太大。表示索引 %2! 的键所需的 %1! 字节超过了 %3! 字节的大小限制。

解释

当组成组合索引的各列的总长度超过 900 字节时发生该错误。

组合索引是使用 2 到 16 个列的索引。例如，以下所示为使用来自 Northwind 数据库中的对象的组合索引：

USE Northwind
GO
CREATE INDEX CompanyNameCity
ON Customers (CompanyName, City)
GO

在本示例中，CompanyName 定义为 nvarchar(40)，而 City 定义为 nvarchar(15)。每个字符需要 2 字节存储空间，因此该组合索引的总长度为 110 字节 (2* (40 + 15))。请注意当使用 varchar 列时，索引将采用 varchar 列的最大长度计算组合索引的长度。

对策

检查组合索引中列的长度，并确保总长度不超过 900 字节。有关确定不同 Microsoft® SQL Server™ 数据类型的存储大小的更多信息，请参见"数据类型"主题，而有关索引的更多信息，请参见 CREATE INDEX 和创建索引。

请参见

错误 1000 - 1999


错误 1904

严重级别 16
消息正文

为统计或索引键列表指定的列名不能超过 %1! 个。指定了 %2! 个。

解释

当使用多于 16 个列创建组合索引时发生该错误。组合索引是使用 2 到 16 个列的索引。

下面的示例展示了使用来自 pubs 数据库中的对象的组合索引：

USE pubs
GO
CREATE INDEX idxPubNameCity
ON publishers (pub_name, city)
GO
对策

修改 CREATE INDEX 语句以使用不超过 16 个列。有关详细信息，请参见 CREATE INDEX。

请参见

创建索引

错误 1000 - 1999


错误 1910

严重级别 16
消息正文

在一个表上创建的非聚集索引或列统计不能超过 %1! 个。

解释

该错误发生于以下情况：

  • 表已经具有 250 个索引。

    或

  • 表具有许多索引，且正在创建或更新统计。如果基列尚不具有索引，则 Microsoft® SQL Server™ 为每组创建的或更新的列级别统计在 sysindexes 中创建一个条目。

下面的示例通过在具有 250 个索引的表上更新统计而产生该错误信息：

USE pubs
GO
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
      WHERE TABLE_NAME = 'TestCols')
   DROP TABLE TestCols
GO
DECLARE @counter int, @stmt varchar(255)
SET @counter = 1
CREATE TABLE TestCols
 (
  c1 int IDENTITY(1, 1),
  c2 char(255)
 )
-- Creating 250 indexes.
WHILE (@counter < 251)
   BEGIN
      IF (@counter = 1)
         CREATE UNIQUE CLUSTERED INDEX Ind1 ON TestCols (c1)
      ELSE
      BEGIN
         SELECT @stmt = 'CREATE INDEX t1Ind' + LTRIM(STR(@counter)) +
            ' ON TestCols (c1)'
         EXEC (@stmt)
      END
      SET @counter = @counter + 1
   END

-- Updating Statistics. Returns error 1910.
UPDATE STATISTICS TestCols (c2) WITH COLUMNS, FULLSCAN
对策

或者：

  • 修改 CREATE INDEX 语句以使用不超过 250 个索引。

    或

  • 删除所有不用的非聚集索引以成功创建或更新统计。

有关详细信息，请参见 CREATE INDEX。

请参见

错误 1000 - 1999

sysindexes

UPDATE STATISTICS


错误 1916

严重级别 16
消息正文

CREATE INDEX 选项 %1! 和 %2! 是互斥的。

解释

当试图使用两个互斥的 CREATE INDEX 语句子句创建索引时发生该错误。当错误发生时不再创建该索引。

下表说明何时使用 CREATE INDEX 子句：

索引类型 | 子句
唯一聚集 | IGNORE_DUP_KEY
非聚集 | 无
唯一非聚集 | IGNORE_DUP_KEY

对策

为 CREATE INDEX 语句选择正确的子句。

请参见

CREATE INDEX

创建索引

错误 1000 - 1999


错误 2501

严重级别 16
消息正文

未能找到名为 ''%1!'' 的表。请检查 sysobjects。

解释

数据库中某些形式的损坏通常导致该错误。当正在除去某个表，但发生严重的错误导致除去失败时经常发生这种情况。

对策

执行 DBCC CHECKDB 和 DBCC CHECKCATALOG 可以指出数据库中的其它问题。从备份还原数据库，或与您的主要支持提供者联系以获得帮助。

还可以使用 bcp 实用工具复制其它表。但因为该问题经常由数据库中的其它问题引起，所以当复制其它表时可能发生问题。

请参见

bcp 实用工具

BULK INSERT

DBCC CHECKDB

DBCC CHECKCATALOG

错误 2000 - 2999

将错误报告给您的主要支持提供者


错误 2511

严重级别 16
消息正文

表损坏：对象 ID %1!，索引 ID %2!。在页 %3! 上的槽 %4! 和 %5! 处发生键次序错误。

表错误：对象 ID %1!，索引 ID %2!。在页 %3! 上的槽 %4! 和 %5! 处发生键次序错误。

解释

当某索引未正确排序时发生该错误。%S_PGID 变量可以是数据页（对于聚集索引）、索引页或叶级页。

对策

解决该问题的最快方法是执行带有 REPAIR_REBUILD 子句的 DBCC CHECKDB。本操作修复整个数据库中的所有索引损坏。如果因为数据库太大您不希望运行 DBCC CHECKDB，则使用下列说明来找到已损坏的特定表。然后，在该表上执行带有 REPAIR_REBUILD 子句的 DBCC CHECKTABLE。

重要 如果执行带有 REPAIR_REBUILD 子句的 DBCC CHECKDB 或 DBCC CHECKTABLE 未更正索引问题，或不确定这两个带有 REPAIR_REBUILD 子句的 DBCC 语句中的任何一个对数据有何影响，则请与您的主要支持提供者联系。

遵循下列步骤：

  1. 记下对象 ID。

  2. 如果出错的对象不是系统表（对象 ID 大于 100），则继续下一步。

  3. 如果出错的对象是系统表（对象 ID 小于 100），则无法除去该索引。从已知的清洁备份还原数据库。

  4. 查找涉及的索引的名称，如下所示：
    USE master
GO
SELECT name
FROM sysindexes
WHERE indid = index_id
    AND id = object_id
  5. 除去并重新创建索引。

  6. 在受影响的表上运行 DBCC CHECKTABLE，以验证所有问题已在表级解决。

如果问题仍存在，请与您的主要支持提供者联系。提供 DBCC CHECKDB 或 DBCC CHECKTABLE 的输出以便检查。

请参见

DBCC CHECKDB

DBCC CHECKTABLE

错误 2000 - 2999

将错误报告给您的主要支持提供者


错误 2513

严重级别 16
消息正文

表错误：对象 ID %1!（对象 ''%2!''）在 ''%4!'' 与 ''%6!'' 之间不匹配。

解释

当 DBCC CHECKCATALOG 语句在一个系统表中检测到某数据库对象，而该对象预期不会在另一个表中时，发生该错误。通常，当 syscolumns、syscomments、sysindexes 或 sysdepends 表中的一个或多个行在 sysobjects 中没有相应的行时发生这种情况。如果影响系统表的某项操作（如删除用户表）被中断，也可能发生该错误。

对策

尽管该错误很少会影响数据库使用，但最好还原受影响的系统表。

警告 直接操作系统目录会导致严重的问题。除非您的主要支持提供者指导您修改系统目录，否则请不要这样做。

遵循下列步骤来还原系统表的一致性：

  1. 通过在问题数据库中对消息中提到的两个表执行查询来显示有问题的行。例如，如果消息报告 syscolumns 和 sysobjects 之间的一项或多项不匹配：
    USE master
GO
SELECT * FROM syscolumns
WHERE syscolumns.id NOT IN
    (SELECT sysobjects.id FROM sysobjects)
  2. 通过启用 allow updates 配置选项来启用对系统表的更新。

    在修改任何系统目录之前，确保具有有效的数据库备份。有关备份操作的更多信息，请参见备份和还原数据库。

    警告 对系统目录的不正确修改会导致数据库损坏或数据丢失。

  3. 确保步骤 1 中显示的行对应于报告的 2513 错误，然后从消息正文中提到的第一个表将这些行删除。

  4. 如果删除所影响的行数与第 1 步中找到的行数不匹配，则回滚事务。如果两个数目匹配，则提交事务。

  5. 若要确认修复了不匹配，请重新执行 DBCC CHECKCATALOG。然后，禁用 allow updates 配置选项。

请参见

BEGIN TRANSACTION

CHECKPOINT

错误 2000 - 2999

设置配置选项

使用启动选项


错误 2535

严重级别 16
消息正文

表错误：页 %1! 分配给了对象 ID %2!，索引 ID %3!，而不是页首结构中所指明的对象 ID %4!，索引 ID %5!。

解释

DBCC CHECKALLOC 语句检测到分配结构（扩展）和 sysindexes 之间对象 ID 中存在不匹配问题。

说明 有时，当真正的错误条件并不存在时 DBCC CHECKALLOC 也报告该错误。如果您怀疑 2535 错误不正确，则请以单用户模式执行 DBCC CHECKALLOC。

对策

遵循下列步骤：

  1. 检查与消息中的页号相关联的索引 ID，以确定错误是发生在表数据中还是发生在索引中。

  2. 还原数据库：
    • 如果对象 ID 小于或等于 100，则错误出现在系统表上。请从干净的备份还原数据库。

    • 如果对象 ID 大于 100，则错误出现在用户表上。

    • 如果该错误出现在表数据上（索引 ID = 1），请从干净的备份还原数据库。

    • 如果该错误出现在索引上，则通常可以通过除去并重建索引来更正错误。如果除去并重建索引不可行，或者无法除去索引，请与您的主要支持提供者联系以获得帮助。

如果问题仍然存在，请与您的主要支持提供者联系以获得帮助。使适当的 DBCC 语句的输出可供查阅。

请参见

DBCC CHECKALLOC

DBCC CHECKDB

DBCC CHECKTABLE

错误 2000 - 2999

将错误报告给您的主要支持提供者


错误 2601

严重级别 14
消息正文

不能在具有唯一索引 ''%3!'' 的对象 ''%1!'' 中插入重复键的行。

解释

当试图将重复的索引值放入具有唯一索引的一个或一些列中时发生该错误。Microsoft® SQL Server™ 不允许在具有唯一索引的列中的两个行具有相同的索引值（包括 NULL）。当创建索引和每次使用 INSERT 或 UPDATE 语句修改表时，SQL Server 均检查是否有重复值。

对策

如果索引列中需要有重复的索引值，则除去唯一索引并创建非唯一索引。

若要在包含重复值的数据上使用唯一索引，必须更改某些值以放置重复。可以使用 SELECT 或 UPDATE 语句更改已经在表中的数据，或更改要插入的数据。

请参见

CREATE INDEX

创建索引

DELETE

错误 2000 - 2999

INSERT

SELECT

UPDATE


错误 2731

严重级别 16
消息正文

列 ''%1!'' 的宽度无效：%2!。

解释

当用户试图创建一个视图，该视图内某列为空或长度小于或等于 0 时，发生该错误。Microsoft® SQL Server™ 2000 中不允许这种情况。

以下是产生该错误的查询的一个例子。请注意 CategoryName 的数据长度为 0。

CREATE VIEW myview AS

SELECT CategoryName = '', p.ProductName, c.Description

FROM Products p, Categories c

WHERE p.CategoryId = c.CategoryId

AND p.UnitsInStock > 0

GO

对策

可以通过以下方法解决该错误：

  • 当创建视图时不使用零长度的列。

  • 指定列长度的默认值。例如：
    create view myview as char(10) "empty column"


错误 2750

严重级别 16
消息正文

第 %1! 个列或参数：指定的列精度 %2! 大于最大精度 %3!。

解释

当 float、decimal 或 numeric 列的精度超过指定数据类型的最大值时发生该错误。

对于 decimal 和 numeric 数据类型，Microsoft® SQL Server™ 通常支持的最大精度为 38 个数字，以与各种前端（如 Microsoft Visual Basic®）兼容。有关运行 sqlservr 应用程序的更多信息，请参见 sqlservr 应用程序。

对策

将列的精度定义为在该数据类型允许的精度范围内的精度。

请参见

decimal 和 numeric

float 和 real

精度、小数位数和长度


错误 2751

严重级别 16
消息正文

第 %1! 个列或参数：指定的列小数位数 %2! 大于指定的精度 %3!。

解释

当 decimal 或 numeric 列的小数位数超出该列的精度值时发生该错误。

对于 decimal 和 numeric 数据类型，Microsoft® SQL Server™ 通常支持的最大精度为 38 个数字，以与各种应用程序兼容。有关运行 sqlservr 应用程序的更多信息，请参见 sqlservr 应用程序。

对策

使用 p 指定精度（必须在 1 和最大精度之间），而使用 s 指定小数位数（必须在 0 和 p 之间）。如果未指定精度，则 SQL Server 使用默认精度 18。如果未指定小数位数，则 SQL Server 使用默认小数位数 0。

请参见

decimal 和 numeric

错误 2000 - 2999

float 和 real

精度、小数位数和长度


错误 2812

严重级别 16
消息正文

未能找到存储过程 ''%1!''。

解释

试图执行不存在的存储过程。如果过程不存在（当 sp_help 在不带参数的情况下运行时出现这种情况），则可能发生错误，因为未完全限定过程名称。如果试图执行过程的用户并不拥有该过程，并且数据库所有者 (dbo) 也不拥有该过程，则对该过程的所有引用必须加上所有者名称。例如，假定用户 1 创建了名为 proc1 的过程。任何用户都必须在该过程名称的前面加上所有者名称，如下例所示：

EXECUTE user1.proc1

数据库对象的命名规则如下所示：

[[[server_name.][database_name].][owner_name].]object_name

database_name 的默认值是当前数据库；owner_name 的默认值是当前用户。如果当前用户不是所有者，则当前用户使用过程时必须指定所有者名称。因为所有者名称是对象名称的一部分，所以两个不同的用户可以在相同的数据库中拥有对象名称相同的过程（例如 user1.proc1 和 user2.proc1）。有关命名规则的更多信息，请参见 Transact-SQL 语法规则。

该命名规则的唯一例外是系统过程，这些过程可以从任何数据库执行。系统过程驻留于 master 数据库，由系统管理员所有，其名称以 sp_ 打头。系统过程引用当前数据库的系统表。

对策

如果您不知道过程的所有者，则请使用 sp_help 来显示其所有者。如果在不带任何参数的情况下运行 sp_help，则显示其他用户拥有的对象。若要确定数据库中存在哪些过程以及这些过程的所有者，请使用以下代码：

USE master
GO
SELECT name,owner = USER_NAME(uid)
FROM sysobjects
WHERE type = 'P'
GO

如果过程未出现在该查询的输出中，则该过程要么在不同的数据库中，要么不存在。

如果该过程不为您所有，则可以通过使用所有者名称限定过程名称来避免错误 2812，如下例所示：

EXECUTE user1.proc1

对于由数据库的许多用户使用的过程，由 dbo 创建该过程是最方便的。这使得所有用户都可以在不指定所有者名称的情况下找到该过程。

如果过程不在执行它的数据库中，则可以通过使用数据库名称完全限定过程名称来避免该错误，如下例所示：

EXECUTE database_1.user1.proc1

如果您或 dbo 拥有该过程，则不需要所有者名称。例如：

EXECUTE database_1..proc1

必须提供执行权限，以便其他用户可以执行该过程，但查看过程的文本不需要权限。

如果该错误发生在系统过程上，则可以通过运行 Instmstr.SQL 来解决错误。本操作重新安装所有系统过程并初始化各种其它结构。

请参见

错误 2000 - 2999

EXECUTE

sp_configure

sp_help


错误 3023

严重级别 16
消息正文

对数据库的备份和文件操作（如 ALTER DATABASE ADD FILE）必须串行化。请在当前备份或文件操作完成后重新发出该语句。

解释

这些操作不得在进行备份操作的同时执行：

  • 文件管理操作，如含有 ADD FILE 或 REMOVE FILE 子句的 ALTER DATABASE 语句。

  • 收缩数据库或收缩文件的文件截断阶段。

如果在进行添加或删除文件操作时开始备份，则备份会等待超时期满后失败。假如正在进行备份时，试图进行这些操作之一，则操作会立即失败。

如果收缩操作在进行备份时试图截断一个文件，则该收缩会停止而不截断文件，而数据页已重新定位。如果正在截断一个文件时启动备份，则该备份通常会等到文件截断完成后进行。

对策

请在冲突操作完成后重新发出该操作。

如果收缩操作失败，请在备份完成后使用 TRUNCATE_ONLY 选项重新发出收缩命令。

请参见

ALTER DATABASE

备份和还原数据库

BACKUP

DBCC SHRINKDATABASE

DBCC SHRINKFILE

设置数据库选项

备份和还原的疑难解答


错误 3036

严重级别 16
消息正文

数据库 ''%1!'' 处于备用状态（通过执行 RESTORE WITH STANDBY 而设置）下，只有整个装载序列完成后，才能进行备份。

解释

备用数据库尚未恢复，不可备份。通常，仅当主服务器失败并将操作切换到备用服务器时，才恢复该数据库。在这之前，依赖于得自主服务器的备份。

请参见

备份和还原数据库

BACKUP

备份和还原的疑难解答


错误 3041

严重级别 16
消息正文

BACKUP 未能完成命令 %1!

解释

该错误说明 Microsoft® SQL Server™ 由于前面的错误而无法完成指定数据库的 BACKUP 操作。失败的 BACKUP 命令在错误信息的结尾处给出。该信息还出现在 Microsoft Windows NT® 应用程序日志中。

对策

若要确定 BACKUP 失败的原因，请检查 Microsoft SQL Server 错误日志中错误 3041 之前的所有错误。

请参见

查看 SQL Server 错误日志


错误 3101

严重级别 16
消息正文

因为数据库正在使用，所以未能获得对数据库的排它访问权。

解释

如果在用户正访问数据库时试图装载备份，则发生该错误。该错误会在使用 RESTORE DATABASE 或 RESTORE LOG 时发生。当包括您自己在内的任何用户正在使用数据库时，无法使用 RESTORE DATABASE 语句。

对策

使用 ALTER DATABASE SET SINGLE_USER 以从数据库删除用户。

或者，等待所有用户都已使用完毕数据库后，再使用 RESTORE DATABASE 语句。在发出 RESTORE DATABASE 语句时，确保未使用正在装载的数据库。虽然不是必须从 master 数据库运行 RESTORE DATABASE 语句，但最好这样做。

请参见

备份和还原数据库

RESTORE


错误 3143

严重级别 16
消息正文

设备 ''%1!'' 上的数据集不是 SQL Server 备份集。

解释

正在还原的备份虽然符合 Microsoft 磁带格式，但不是 Microsoft® SQL Server™ 备份。该备份可能由其它软件产品写入。

对策

若要确定备份的内容，请考虑使用 RESTORE HEADERONLY 语句。

请参见

备份和还原数据库

BACKUP

RESTORE HEADERONLY

备份和还原的疑难解答


错误 3154

严重级别 16
消息正文

备份集中备份的数据库与现有的数据库 ''%1!'' 不同。

解释

备份集是与正在还原的数据库同名的一个数据库备份。但是，正在还原的数据库是由不同于备份集中数据库的 CREATE DATABASE 语句所创建。即使数据库具有相同的名称，事实上它们也是不同的数据库。

对策

要么重新发出 RESTORE DATABASE 命令并使用 WITH REPLACE 子句以重写现有的数据库，要么将备份集还原为其它数据库名称。如果是将备份集还原为其它数据库名称，确保要创建的文件不存在并没有为另一个数据库所用。如果选错了要还原的备份集，则选择现有数据库的备份，并将其还原。

请参见

备份和还原数据库

CREATE DATABASE

RESTORE

备份和还原的疑难解答


错误 3155

严重级别 16
消息正文

自创建备份集以来，在数据库中添加或除去了一个或多个文件，所以 RESTORE 操作无法继续。

解释

还原序列必须开始于将完整数据库备份还原，该完整备份在从数据库添加或删除文件之后创建。不能在整个文件创建或删除操作中前滚。

请参见

备份和还原数据库

RESTORE

备份和还原的疑难解答


错误 3206

严重级别 16
消息正文

在 sysdevices 中没有备份设备 ''%1!'' 的条目。请更新 sysdevices 后重新运行语句。

解释

试图使用非备份设备的逻辑设备。

对策

要么使用 sp_addumpdevice 定义设备，要么通过指定 BACKUP 语句的 TAPE = 或 DISK = 语法直接引用物理设备。

请参见

备份和还原数据库

错误 3209

sysdevices

备份和还原的疑难解答


错误 3209

严重级别 16
消息正文

''%1!'' 不是备份设备。请检查 sysdevices。

解释

试图使用非备份设备的逻辑设备。

对策

要么使用 sp_addumpdevice 定义设备，要么通过指定 BACKUP 语句的 TAPE = 或 DISK = 语法直接引用物理设备。

请参见

备份和还原数据库

错误 3206

sp_addumpdevice

sysdevices

备份和还原的疑难解答


错误 3227

严重级别 16
消息正文

设备 ''%1!'' 上的卷是条带集成员 %2! 的复本。

解释

该消息发生于以下情况之一：

  • 来自同一媒体家族的卷安装在多个磁带设备上。所有这种卷必须安装在同一设备上。

  • 将来自已处理的媒体家族的卷装载到指定设备中。
对策

将卷从指定设备移去并插入正确的卷。

请参见

备份和还原数据库

RESTORE

备份和还原的疑难解答


错误 3242

严重级别 16
消息正文

设备 ''%1!'' 的文件不是有效的 Microsoft 磁带格式备份集。

解释

由于以下情况之一，备份设备不包含 Microsoft 磁带格式的数据：

  • 备份集的内容不是由 SQL Server 7.0 或更高版本生成。

  • 备份集的内容已损坏。

请参见

备份和还原数据库

BACKUP

RESTORE

备份和还原的疑难解答


错误 3247

严重级别 16
消息正文

设备 ''%1!'' 上的卷的媒体序列号 (%2!) 错误。请取出该卷并插入卷 %3!。

解释

媒体家族跨越多卷。还原操作本应处理错误信息中指定的卷，但却找到了同一媒体家族中的另一个卷。

对策

从指定设备移去该卷并插入具有所请求值的卷。

请参见

备份和还原数据库

RESTORE

备份和还原的疑难解答


错误 3249

严重级别 16
消息正文

设备 ''%1!'' 上的卷是备份集的延续卷。请取出该卷并插入包含备份集开始部分的卷。

解释

媒体家族跨越多卷。还原操作要处理的备份集从早于插入命名设备的卷开始。

对策

移去该卷并插入包含目标备份集开始部分的卷。若要确定各卷所包含的备份集，请使用 RESTORE HEADERONLY。

请参见

备份和还原数据库

RESTORE

RESTORE HEADERONLY

备份和还原的疑难解答


错误 3251

严重级别 10
消息正文

设备 ''%1!'' 上的媒体家族已完成。该设备现在正重新用于其余家族之一。

解释

还原操作允许媒介集还原时使用的物理设备比创建该媒介集时所用设备少。该信息表示还原操作已完全处理了命名设备上的媒体家族，现在已准备好重新使用该设备还原媒体集中剩余媒体家族之一。

对策

从命名设备移去该卷，并插入某个尚未处理的媒体家族的第一个卷。

请参见

备份和还原数据库

RESTORE

备份和还原的疑难解答


错误 3256

严重级别 16
消息正文

设备 ''%1!'' 上的备份集在创建时被终止，该备份集不完整。RESTORE 序列已异常终止。

解释

创建备份集的备份操作没有成功完成。只能还原成功创建的备份集。例如，备份可能由于提示信息而终止。备份集不完整，且还原操作必须终止。

对策

如果是还原数据库备份，请还原不同的数据库备份，并使用日志备份进行前滚。如果是还原日志备份，请应用下一个日志备份，即不完整备份之后所做的日志备份。

请参见

备份和还原数据库

BACKUP

RESTORE

备份和还原的疑难解答


错误 3258

严重级别 16
消息正文

设备 ''%1!'' 上的卷属于另一个媒体集。

解释

命名设备上的卷并不属于与正在处理的其它卷一样的媒体集。

对策

对于磁带媒体集，移去有问题的卷并插入媒体家族的下一个卷。

对于磁盘媒体集，重新发出命令。只命名属于同一媒体集的备份设备。

请参见

备份和还原数据库

BACKUP

RESTORE

备份和还原的疑难解答


错误 3263

严重级别 10
消息正文

无法将设备 ''%1!'' 上的卷用作延续卷。其序列号为 %2!，属于当前媒体集的家族 %3!。请插入新卷，或序列号为 %4!、属于当前媒体集的家族 %5!。

解释

媒体集跨越多卷。由于当前存在于命名设备中的卷已用作媒体集的成员，所以初始化该卷会破坏该媒体集的完整性。

对策

移去该卷并插入可重写的新磁带。

请参见

备份和还原数据库

RESTORE

备份和还原的疑难解答


错误 3267

严重级别 16
消息正文

资源不足，无法创建 UMS 调度程序。

解释

当试图进行备份或还原操作时，该错误信息表明服务器太忙，无法执行备份或还原操作。

对策

减少服务器负荷后，重试该操作。

请参见

备份和还原数据库

BACKUP

RESTORE

备份和还原的疑难解答


错误 3414

严重级别 10
消息正文

数据库 ''%1!''（数据库 ID %3!）未能恢复。请与技术支持联系以获得进一步的指导。

解释

启动过程中，Microsoft® SQL Server™ 无法完成指定数据库的恢复。

对策

若要确定恢复失败的原因，请检查错误日志中错误 3434 之前的所有错误。检查在错误 3414 第一次发生之前发生的错误十分重要，因为启动服务器的后续尝试不会提供诊断问题所需的详细错误信息。如果信息不足而无法从以前的错误恢复，则可以从已知的干净备份恢复，或者与您的主要支持提供者联系以获得帮助。注意，只有造成错误的所有原因已经更正方可使用数据库。

请参见

将错误报告给您的主要支持提供者


错误 3604

严重级别 10
消息正文

已忽略重复的键。

解释

当试图在现有索引上插入具有违反唯一性属性（带有 IGNORE_DUP_KEY 的 unique）的索引值的行时会发生该错误。

Microsoft® SQL Server™ 忽略造成错误的语句，并继续处理事务。

对策

除非想将该行插入表，否则无需对策。假如这样的话，可以在不带 UNIQUE 子句的情况下除去并重建索引，或者更改导致违反唯一性的数据。

请参见

CREATE INDEX

创建索引


错误 3627

严重级别 16
消息正文

未能创建工作线程。

解释

当试图进行备份或还原操作时，该错误信息表明服务器太忙，无法执行备份或还原操作。

对策

减少服务器负荷后，重试该操作。

请参见

备份和还原数据库

BACKUP

RESTORE

备份和还原的疑难解答


错误 4208

严重级别 16
消息正文

当恢复模型为 SIMPLE 时，不允许使用 %1! 语句。请使用 BACKUP DATABASE 或用 ALTER DATABASE 更改恢复模型。

解释

使用简单恢复模型时，日志在出现定期检查点时截断。因为日志已被截断，并且所做的日志备份将不可用，所以只允许使用完整数据库备份和差异数据库备份。

对策

若要只通过执行完整数据库备份和差异数据库备份来维护数据库，请连同 BACKUP DATABASE 一起使用简单恢复模型。

若要维护完整的事务日志备份集以保证在发生故障时不丢失对数据库的更改，请使用 ALTER DATABASE 将恢复模型更改为完整恢复或大容量日志记录恢复。然后使用 BACKUP DATABASE，并开始使用 BACKUP LOG 进行定期事务日志备份。

请参见

BACKUP

设置数据库选项

sp_dboption

备份和还原的疑难解答


错误 4214

严重级别 10
消息正文

没有当前的数据库备份。此日志备份不能用于前滚先前的数据库备份。

解释

若要在失败后还原数据库，必须从完整数据库备份开始，或者从部分或全套文件备份开始。该数据库要么从未备份过，要么在从简单恢复模型切换到完全恢复或大容量日志记录恢复之后、执行数据库或文件备份之前执行 BACKUP LOG 语句。因此，刚刚完成的日志备份毫无用处。

对策

在备份日志之前执行完整数据库备份。

请参见

BACKUP

备份和还原的疑难解答


错误 4305

严重级别 16
消息正文

此备份集中的日志开始于 LSN %1!，该 LSN 太晚，无法应用到数据库。包含 LSN %3! 的较早的日志备份可以还原。

解释

还原操作在上一次还原和尝试应用的事务日志之间，发现了间隙。

对策

找到丢失的早期事务日志备份，并首先应用它们。事务日志必须按其备份的顺序还原。

请参见

备份和还原数据库

RESTORE

备份和还原的疑难解答


错误 4306

严重级别 16
消息正文

先前的还原操作未指定 WITH NORECOVERY 或 WITH STANDBY。请在除最后步骤之外的所有其它步骤中指定 WITH NORECOVERY 或 WITH STANDBY 后，重新启动该还原序列。

解释

在数据库已恢复后，不得执行进一步的还原操作。

对策

若要恢复数据库，请再次启动序列，并在除最后一个语句之外的所有 RESTORE 语句上使用 NORECOVERY 子句。如果正在维护备用服务器并想在还原操作之间调出只读模式的数据库，请使用 RESTORE 的 STANDBY 子句而不是 NORECOVERY 子句。

请参见

备份和还原数据库

RESTORE

备份和还原的疑难解答


错误 4318

严重级别 16
消息正文

已将文件 ''%1!'' 前滚到 LSN %2!。此日志终止于 LSN %4!，该 LSN 太早，无法应用 WITH RECOVERY 选项。请以 WITH NORECOVERY 选项重新发出 RESTORE LOG 语句。

解释

试图将数据库恢复到其在进行当前日志备份时的状态。但是，自创建该备份后至少有一个文件已被修改。由于数据库处于不一致状态，不可能进行恢复。

对策

若要将数据库恢复到其最近的状态，请重新发出带有 NORECOVERY 子句的 RESTORE LOG 语句，并继续应用事务日志，直至前滚到足够程度才进行恢复。

若要将数据库恢复到该日志备份结尾处的即时点，请使用 RESTORE DATABASE 以将指定的文件还原为较早的状态，并将其前滚。

请参见

备份和还原数据库

RESTORE

备份和还原疑难解答


错误 5013

严重级别 16
消息正文

不能向 master 和 model 数据库添加文件。ALTER DATABASE 已终止。

解释

当试图通过添加数据库文件扩展 master 或 model 数据库时发生该错误。

对策

仅在必要时才扩展 master 或 model 数据库。如果需要，master 数据库会自动增长。如果 master 文件驻留的磁盘驱动器没有空间，则要么删除其它文件以腾出更多的磁盘空间，要么以较大的磁盘驱动器替代该磁盘驱动器。如果需要扩展 model 数据库，请确保 model 数据文件当前所驻留的磁盘驱动器具有可用的磁盘空间。

请参见

ALTER DATABASE

重建 master 数据库（级别 4）

从当前备份还原 master 数据库


错误 5701

严重级别 10
消息正文

已将数据库上下文改为 ''%1!''。

解释

这是说明数据库上下文已改变的报告性信息。只要执行 USE database 语句就会返回该信息。

对策

无需对策。

请参见

USE


错误 5808

严重级别 16
消息正文

建议不要对系统目录进行特殊更新。请用 RECONFIGURE WITH OVERRIDE 语句来强制实施这一配置。

解释

在以下其中一种情况下发生该错误信息：

  • 当用户试图使用带有 allow updates 选项的 sp_configure 系统存储过程时。

  • 当用户试图将配置参数设置为一个会被 Microsoft® SQL Server™ 识别为可能影响性能或平稳操作的值时。

当启用 allow updates 选项时，SQL Server 允许直接更新系统表，因此任何可作为 SQL Server 系统管理员登录的用户都可以用特殊查询直接更新系统表，并创建更新系统目录的存储过程。对系统表所做的不正确更改会造成不可恢复的数据库损坏或数据丢失。

警告 直接操作系统目录会导致严重的问题。除非您的主要支持提供者指导您修改系统目录，否则请不要这样做。

对策

在修改任何系统目录之前，确保具有有效的数据库备份。有关备份操作的更多信息，请参见备份和还原数据库。

警告 对系统目录的不正确修改会导致数据库损坏或数据丢失。

如果可能，使用 sqlservr 应用程序的 -m 标志以单用户模式重新启动 SQL Server，以便不会发生疏忽性修改。有关更多信息，请参见 sqlservr 应用程序。

若要修改系统目录，请使用 osql 实用工具更改 allow updates 系统配置设置。

说明 只有系统管理员能够更改 allow updates 系统配置设置的值。

请参见

allow updates 选项

osql 实用工具

将错误报告给您的主要支持提供者

设置配置选项

sp_configure

使用启动选项


错误 6103

严重级别 17
消息正文

未能执行被取消进程的清除工作。收到的消息数为 %1!。

解释

当其它错误引起用户连接异常终止时会出现该错误信息。引起该错误的信息数会在错误 6103 的信息中打印。

对策

检查并解决该错误信息中报告的"收到的消息"。

请参见

如何取消进程（企业管理器）

KILL


错误 6826

严重级别 16
消息正文

FOR XML EXPLICIT 查询中的每个 IDREFS 列或 NMTOKENS 列都必须分别出现在一条 SELECT 子句中，并且这些实例都必须直接排列在它们所属的元素之后。

解释

架构可能没有指定足够的关键字字段。

对策

可通过添加 sql:key-fields 批注来解决这一问题。


错误 7130

严重级别 16
消息正文

目前 %1! WITH NO LOG 无效。请使用 sp_dboption 来为数据库 ''%2!'' 打开 select into/bulkcopy 选项。

解释

在未启用 sp_dboption 系统存储过程的 select into/bulkcopy 选项的数据库中，执行 UPDATETEXT 或 WRITETEXT 语句时，或者执行 dbupdatetext 或 dbwritetext 例程时，出现该错误。因为这些是无日志记录的操作，所以必须启用该选项。

通常，UPDATETEXT、WRITETEXT、dbupdatetext 和 dbwritetext 在临时表上运行。select into/bulkcopy 选项必须在 tempdb 启用，否则它们不能成功运行。

对策

为所有受包含无日志记录操作的查询影响的数据库，启用 sp_dboption 系统存储过程的 select into/bulkcopy 选项。若要实现该操作，系统管理员和数据库的所用者应当按照以下步骤执行：

  1. 启用选项：
    USE master
GO
sp_dboption database_name, 'select into/bulkcopy',true
GO
USE database_name
GO
CHECKPOINT
GO
  2. 验证更改是否处于活动状态：
    sp_helpdb database_name
GO
  3. 执行无日志记录的操作。

  4. 完成无日志记录操作后，备份数据库。

    注意 在执行无日志记录操作后，请不要备份事务日志。虽然该过程看似成功，但可能只备份了空白的文本页。无论何时对数据库进行无日志记录的更改，都必须使用 BACKUP DATABASE 语句，这是因为无日志记录操作所做的更改无法从事务日志中恢复。

  5. 禁用 select into/bulkcopy 选项，以将数据库返回到其最初的情况：
    6. USE master
GO
sp_dboption database_name, 'select into/bulkcopy',false
GO
USE database_name
GO
CHECKPOINT
GO
  6. 验证更改是否处于活动状态：
    sp_helpdb database_name
GO

请参见

CHECKPOINT

dbwritetext

dbupdatetext

设置数据库选项

sp_dboption

sp_helpdb

UPDATETEXT

WRITETEXT


错误 7303

严重级别 16
消息正文

未能初始化 OLE DB 提供程序 ''%1!'' 的数据源对象。%2!

解释

该错误信息表明无法初始化 OLE DB 数据源对象。

对策

该错误信息会因以下问题之一而出现。

问题 | 解决方法
在 sp_addlinkedserver 中指定的初始化参数之一（data_source、location、provider_string 或 catalog）对于该提供程序来说不正确。 | 验证这些为链接服务器定义、通过执行 sp_addlinkedserver 指定的参数对于给定的提供程序是否正确。检查该提供程序的文档以获得这些参数的正确值。
发送到提供程序的登录和密码无效。 | 验证是否通过 sp_addlinkedsrvlogin 为链接服务器和当前的 SQL Server 登录配置了有效的登录和密码。

请参见

分布式查询

错误 7000 - 7999

sp_addlinkedserver

sp_addlinkedsrvlogin


错误 7304

严重级别 16
消息正文

未能在 OLE DB 提供程序 ''%1!'' 上创建新会话。

解释

无法创建 OLE DB 数据源的新会话。

对策

检查提供程序返回的错误信息，并查阅提供程序的文档。

请参见

访问外部数据

sp_addlinkedserver


错误 7306

严重级别 16
消息正文

未能打开表 ''%1!''（来自 OLE DB 提供程序 ''%2!''）。%2!

解释

如果 OLE DB 提供程序不支持 UPDATE、DELETE 和 INSERT 语句所要求的接口和 OLE DB 属性，就会返回该错误信息。

对策

在这个方案中，对 OLE DB Errors 的跟踪会输出有关特定丢失 OLE DB 支持的更多信息。例如，在 Microsoft® SQL Server™ 的情况下，如果远程表上未定义唯一索引，则该表不支持 INSERT、UPDATE 和 DELETE 语句。这种情况下，SQL 事件探查器会输出以下信息：

OLE/DB Provider 'SQLOLEDB' IOpenRowset::OpenRowset returned 0x80040e21:
[PROPID=DBPROP_BOOKMARKS VALUE=True STATUS=DBPROPSTATUS_OK], [PROPID=DBPROP_IRowsetLocate
VALUE=True STATUS=DBPROPSTATUS_OK], [PROPID=DBPROP_IRowsetChange VALUE=True
STATUS=DBPROPSTATUS_CONFLICTING], [PROPID=DBPROP_UPDATABILITY VALUE=1 STATUS=DBPROPSTATUS_OK]

该错误信息表明每个 OLE DB 属性的状态，这些属性是在针对正在更新的表打开的行集上请求的。该信息表明除 DBPROP_IRowsetChange 属性之外，提供程序提供了 SQL Server 执行该查询所需的所有属性。

请参见

分布式查询

错误 7000 - 7999

sp_addlinkedserver


错误 7314

严重级别 16
消息正文

OLE DB 提供程序 ''%1!'' 不包含表 ''%2!''。该表可能不存在，或当前用户没有使用该表的权限。

解释

指定的表或列不存在，或用于连接提供程序的登录没有使用该表或列所需的权限。

该信息在区分大小写的服务器上出现。

对策

验证指定的表或列是否存在。验证指定的表或列是否得到了适当权限。

如果该表最初在 Oracle 中不带引号创建，则全部使用大写字母指定分布式查询中的表名。如果该表最初在 Oracle 中带引号创建，则全部使用小写字母指定分布式查询中的表名。

请参见

分布式查询

错误 7000 - 7999

用 SQL Server 测试过的 OLE DB 提供程序

sp_addlinkedserver


错误 7321

严重级别 16
消息正文

准备对 OLE DB 提供程序 ''%1!'' 执行查询时出错。%2!

解释

表明直接传递查询的查询字符串参数可能存在语法错误。

对策

验证查询字符串是否无语法错误（就 OLE DB 提供程序支持的查询语言而言）。

请参见

分布式查询

错误 7000 - 7999

OPENQUERY


错误 7356

严重级别 16
消息正文

OLE DB 提供程序 ''%1!'' 为列提供的元数据不一致。执行时更改了元数据信息。

解释

该错误表明，提供程序在给定的表上在查询的编译时和执行时报告的元数据不一致。提供程序返回的 OLE DB 架构行集 COLUMNS（编译期间）的元数据与表的行集上的 IColumnsInfo 接口报告的元数据不一致时，一般会出现这种情况。

对策

参考 SQL 事件探查器以确定导致该错误的表列。

请参见

分布式查询

错误 7000 - 7999

使用 SQL 事件探查器进行监视

sp_addlinkedserver


错误 7357

严重级别 16
消息正文

未能处理对象 ''%1!''。OLE DB 提供程序 ''%2!'' 指出该对象中没有任何列。

解释

指定的表或列不存在，或用于连接提供程序的登录没有使用该表或列所需的权限。

对策

验证指定的表或列是否存在。验证指定的表或列是否得到了适当权限。

请参见

分布式查询

sp_addlinkedserver


错误 7391

严重级别 16
消息正文

该操作未能执行，因为 OLE DB 提供程序 ''%1!'' 无法启动分布式事务。

解释

处理显式或隐性事务内的 INSERT、UPDATE 或 DELETE 语句时会出现该错误。这表明 OLE DB 提供程序不支持显式或隐性事务内数据修改语句所需的分布式事务。只有在数据修改语句本身是一个事务的情况下，才可对这样的提供程序执行该语句。

对策

验证指定的 OLE DB 提供程序是否支持分布式事务。如果提供程序不支持分布式事务，则将数据修改语句重写为不使用分布式事务。

请参见

分布式查询


错误 7392

严重级别 16
消息正文

未能为 OLE DB 提供程序 ''%1!'' 启动事务。

如果提供程序是 SQL Server 特有的提供程序，则 Microsoft® SQL Server™ 也返回该错误信息：

在该会话上只有一个事务可以为活动的。

解释

因为该会话只有一个事务可以为活动的，所以 OLE DB 提供程序返回错误 7392。该错误表明，当连接在显式或隐性事务中，并且 OLE DB 提供程序不支持嵌套事务时，尝试对 OLE DB 提供程序执行数据修改语句。SQL Server 要求这种支持，以便在某些错误情况下，可以在继续事务的同时终止数据修改语句的作用。

对策

SET XACT_ABORT 为 ON。当处理数据修改语句出错时，这会导致 SQL Server 终止周围的事务。如果 SET XACT_ABORT 为 ON，SQL Server 不要求 OLE DB 提供程序支持嵌套事务。

请参见

分布式查询

SET XACT_ABORT


错误 7399

严重级别 16
消息正文

OLE DB 提供程序 ''%1!'' 报错。%2!

无法启动应用程序。工作组信息文件丢失，或是已被其它用户以独占方式打开。

解释

用于 Jet 的 Microsoft OLE DB 提供程序返回的错误信息表明以下情况之一：

  • Microsoft® Access 数据库不是受保护的数据库，且指定的登录和密码不是无密码的 Admin。

  • Access 数据库受到保护，并且 HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\SystemDB 注册表键值未指向正确的 Access 工作组文件。受保护的 Access 数据库具有相应的工作组文件，其中包括应由上面的注册表键值指出的完整路径。
对策

验证当前 Microsoft SQL Server™ 的登录是否映射为无密码的 Admin。

如果正在访问的 Access 数据库受到保护，请确保上面的注册表键值指向 Access 工作组文件的完整路径名。

请参见

分布式查询

sp_addlinkedserver


错误 7403

严重级别 16
消息正文

未能找到 OLE DB 提供程序 ''%1!'' 的注册表项。

解释

该错误信息表明以下情况之一：

  • OLE DB 提供程序未正确注册。

  • 在 sp_addlinkedservere 的 provider_name 参数中使用的（或在 OPENROWSET 函数中指定的）提供程序名称不正确。
对策

验证提供程序是否已正确注册，以及 provider_name 参数是否使用该提供程序的 PROGID。

请参见

分布式查询

OPENROWSET

sp_addlinkedserver


错误 7413

严重级别 16
消息正文

未能执行 Windows NT 验证登录，因为委托不可用。

解释

该错误信息表明，在没有显式登录映射的情况下尝试对 Microsoft® Windows® 验证登录执行分布式查询。在不支持安全委托的操作系统环境中，Windows NT 验证登录需要显式映射到使用 sp_addlinkedsrvlogin 创建的远程登录和密码。

对策

使用 sp_addlinkedsrvlogin 创建对远程登录和密码的显式映射。

请参见

分布式查询

sp_addlinkedsrvlogin


错误 8101

严重级别 16
消息正文

仅当使用了列的列表，并且 IDENTITY_INSERT 为 ON 时，才能在表 ''%1!'' 中为标识列指定显式值。

解释

试图将包含特定标识值的行插入包含标识列的表中。但是，未提供列的列表或没有为指定的表启用 SET IDENTITY_INSERT。

对策

若要成功地将特定的标识行插入包含标识列的表中，必须提供列的列表并且将 SET IDENTITY_INSERT 设为 ON。以下示例插入了标识行 2，该行中将 iID 定义为标识列。

Table: tblTest
iID         strData
1           King
3           Suyama

-- Enable IDENTITY_INSERT.
SET IDENTITY_INSERT tblTest ON
GO
-- Insert the specified identity row using a column list.
INSERT INTO tblTest (iID, strData) values (2, 'Davolio')
GO
-- Disable IDENTITY_INSERT.
SET IDENTITY_INSERT tblTest OFF
GO

请参见

SET IDENTITY_INSERT


错误 8102

严重级别 16
消息正文

无法更新标识列 ''%1!''。

解释

明确试图在 UPDATE 语句的 SET 部分中更改标识列的值。只能在 UPDATE 语句的 WHERE 子句中使用标识列。

对策

不允许更新标识列。若要更新标识列，可以使用以下方法：

  • 若要重新指派所有标识值，请大容量复制出数据，然后除去并重建具有正确种子和增量值的表。然后将数据大容量复制回到新建的表中。当 bcp 插入值时，将适当地增加这些值并重新分发标识值。也可以使用 INSERT INTO 和 sp_rename 命令完成同一操作。

  • 若要重新指派单个行，必须删除该行，然后使用 SET IDENTITY_INSERT tblName ON 子句将其插入。

请参见

bcp 实用工具

INSERT

SET IDENTITY_INSERT

sp_rename

UPDATE


错误 8106

严重级别 16
消息正文

表 ''%1!'' 没有标识属性。无法执行 SET 操作。

解释

试图在不包含标识列的表上使用 SET IDENTITY_INSERT 属性。

对策

通过使用 sp_help tblName 存储过程验证标识列信息来复查该表。

请参见

SET IDENTITY_INSERT

sp_help


错误 8114

严重级别 16
消息正文

将数据类型 %1! 转换为 %2! 时出错。

解释

如果错误文本分别引用了 DBTYPE_DATE 和 datetime，则该错误信息表明远程表的 DBTYPE_DATE OLE DB 数据类型列不能转换为 Microsoft® SQL Server™ 中的 datetime 值。DBTYPE_DATE 列很可能具有超出 datetime 数据类型所支持范围的值（datetime 值必须在 1753 年 1 月 1 日到 9999 年 12 月 31 日之间）。因为 DBTYPE_DATE 数据类型的值的范围大于 SQL Server datetime 数据类型的范围，所以如果该列包含 SQL Server 所支持范围以外的值就会出现这种错误。

对策

从查询选择列表或谓词列表中删除 DBTYPE_DATE 数据类型的远程表列。

请参见

datetime 和 smalldatetime

分布式查询

错误 7000 - 7999


错误 8155

严重级别 16
消息正文

没有为第 %1! 列（属于 ''%2!''）指定列。

解释

没有为选择列表中的一个或多个聚合或计算列提供别名。

对策

为所有聚合或计算列提供别名。例如：

select pub_name, "count"=count(*)

into #t

from publishers p, titles t

where p.pub_id = t.pub_id

group by pub_name


错误 8163

严重级别 16
消息正文

不能以 DISTINCT 方式选择 text、ntext 或 image 数据类型。

解释

查询时，Microsoft® SQL Server™ 不允许将 SELECT DISTINCT 用于 text、ntext 或 image 列。例如，以下查询失败，返回错误 8163：

USE Northwind
SELECT DISTINCT Description
FROM Categories
对策

当使用 SELECT DISTINCT 时，删除对任何 text、ntext 或 image 列的引用。

请参见

使用 DISTINCT 消除重复项

查询基础知识

SELECT


错误 8501

严重级别 16
消息正文

服务器 ''%1!'' 上的 MS DTC 不可用。

解释

处理显式或隐性事务内的 INSERT、UPDATE 或 DELETE 语句时会出现该错误。该错误通常表明 MSDTC 服务未在本地服务器上运行。显式或隐性事务中的数据修改语句要求运行 MSDTC 服务以及提供程序对分布式事务的支持。

对策

使用 SQL Server 服务管理器验证 MSDTC 服务是否已在服务器上启动。有关更多信息，请参见 Microsoft 分布式事务处理协调器文档。

请参见

分布式查询

错误 7000 - 7999


错误 8645

严重级别 17
消息正文

等待执行查询所用的内存资源时发生超时。请重新运行查询。

解释

如果 query wait 配置选项为 –1，那么 Microsoft® SQL Server™ 等待运行查询所需内存的时间为估计查询成本的 25 倍。如果查询时间为非负值，那么 SQL Server 等待运行查询所需内存的时间为该值（以秒为单位）。查询超时且尚未执行。

对策

可以：

  • 释放服务器上的内存。
    • 检查虚拟内存换页文件的大小。

    • 如果可能，增加该文件的大小。

    • 如果可以，关闭服务器上运行的其它应用程序。
  • 向服务器添加更多的内存。

  • 减少服务器工作负荷。

    若要减少服务器的工作负荷，请减少当前使用 SQL Server 的用户数。若要防止其他用户登录到 SQL Server，请暂停服务器。有关更多的信息，请参见暂停和继续执行 SQL Server。

  • 创建一个或多个索引。

  • 增加 query wait 配置值。

请参见

索引优化向导

query wait 选项

sp_configure


错误 8621

严重级别 16
消息正文

内部查询处理器错误：在查询优化过程中，查询处理器用尽了堆栈空间。

解释

当优化查询时，查询处理器正在使用大量但有限的内存堆栈。在某些极端情况下，堆栈的大小会限制给定的超大型查询（例如，包含具有 100,000 个常量的内目录的查询）。

对策

简化查询以避免该问题。例如，在内目录特别大的情况下，使用临时表或表变量来存储常量，并将查询重写为使用该变量或临时表。


错误 8651

严重级别 17
消息正文

未能执行所请求的操作，因为可用内存少于最小查询内存。请减小 ''min memory per query'' 服务器配置选项的配置值。

解释

SQL Server 已计算了完成该查询所需的内存量。当前不具有所需的内存量；min memory per query 选项可能过高。

对策

重新提交查询。如果重新提交查询不允许查询运行，可以：

  • 向服务器添加更多的内存。

  • 创建一个或多个索引。

  • 减少 min memory per query 的值。

  • 如果 query wait 配置选项的值不是零，则增加该值。

请参见

索引优化向导

min memory per query 选项

query wait 选项

sp_configure


错误 8906

严重级别 16
消息正文

扩展盘区 %1!（属于数据库 ID %2!）在 SGAM %3! 和 PFS %4! 中进行了分配，但未在任何 IAM 中进行过分配。PFS 标志 ''%5!''。

解释

SQL Server 在指定的数据库中发现了分配错误。

对策

从已知的干净备份还原，或者执行带有 REPAIR_ALLOW_DATA_LOSS 子句的 DBCC CHECKDB。例如：

DBCC CHECKDB('pubs', REPAIR_ALLOW_DATA_LOSS)

如果错误涉及索引页，请使用 REPAIR_REBUILD 子句。如果错误涉及数据页，可能需要使用 REPAIR_ALLOW_DATA_LOSS 子句。在不允许丢失数据的可能事件中，将需要从已知的干净备份进行还原。如果问题仍然存在，请与您的主要支持提供者联系。使 DBCC CHECKDB 的输出可查阅。

重要 如果执行带有修复子句之一的 DBCC CHECKDB 未更正索引问题，或者您不确定带有修复子句的 DBCC CHECKDB 对数据的作用，请与您的主要支持提供者联系。

如果带有 REPAIR_ALLOW_DATA_LOSS 子句的 DBCC CHECKDB 未解决分配错误，请与您的主要支持提供者联系。

请参见

DBCC CHECKDB

管理扩展盘区分配和可用空间

将错误报告给您的主要支持提供者


错误 8908

严重级别 16
消息正文

表错误：数据库 ID %1!，对象 ID %2!，索引 ID %3!。%4!->next = %5!，但 %6!->prev = %7!。

解释

当 Microsoft® SQL Server™ 在与表关联的一个页链的页链接中检测到不一致时（例如当某页的 next 指针指向一页，而该页的 previous 指针却向回指向另一页时），会出现该错误。表数据具有一个双向链接页链，每个索引级别也具有一个这样的页链。

重要 这属于严重错误，必须立即更正。

如果 DBCC 语句在运行时处理期间检测到该错误，还将出现错误 605。

对策

通过检查错误信息中的 current page 确定损坏的表。执行不带修复子句的 DBCC CHECKDB 以确定损坏的程度。然后，执行带有适当修复子句的 DBCC CHECKDB 以修复损坏部分。如果该页与索引相关联，有时除去索引可能解决问题。在多数情况下，必须从已知的干净备份恢复数据库。

如果错误涉及索引页，请使用 REPAIR_REBUILD 子句。如果错误涉及数据页，可能需要使用 REPAIR_ALLOW_DATA_LOSS 子句。在不允许丢失数据的可能事件中，将需要从已知的干净备份进行还原。如果问题仍然存在，请与您的主要支持提供者联系。使 DBCC CHECKDB 的输出可查阅。

重要 如果执行带有修复子句之一的 DBCC CHECKDB 未更正索引问题，或者您不确定带有修复子句的 DBCC CHECKDB 对数据的作用，请与您的主要支持提供者联系。

除 SQL Server 错误日志外，还应检查操作系统错误日志文件，以确定是否是硬件错误造成损坏。

如果问题仍然存在，请与您的主要支持提供者联系。使 DBCC CHECKDB 语句的输出可查阅。

请参见

DBCC CHECKDB

错误 2000 - 2999

错误 8000 - 8999

将错误报告给您的主要支持提供者


错误 8925

严重级别 16
消息正文

表错误：跨对象链接：页 %1!，槽 %2!（位于对象 ID %3!，索引 ID %4! 中）指向了页 %5!，槽 %6!（位于对象 ID %7!，索引 ID %8! 中）。

解释

当 Microsoft® SQL Server™ 在与表关联的一个页链的页链接中检测到不一致时会出现该错误。发现某一页在本应该只链接一个链时链接了多个页链。表数据具有一个双向链接页链，每个索引级别也具有一个这样的页链。

重要 这属于严重错误，必须立即更正。

如果不带修复子句的 DBCC CHECKDB 在运行时处理期间检测到该错误，还会出现错误 605。

对策

按照以下步骤解决错误：

  1. 检查与信息中指出的页号关联的索引 ID，以确定错误是出现在表数据上还是索引上。

  2. 还原数据库：
    • 如果对象 ID 小于或等于 100，则错误出现在系统表上。请从干净的备份还原数据库。

    • 如果对象 ID 大于 100，则错误出现在用户表上。

    • 如果该错误出现在表数据上（索引 ID = 0），请从干净的备份还原数据库。

    • 如果该错误出现在索引上，则通常可以通过除去并重建索引来更正错误。如果除去并重建索引不可行，或者无法除去索引，请与您的主要支持提供者联系以获得帮助。

如果问题仍然存在，请与您的主要支持提供者联系以获得帮助。使适当的 DBCC 语句的输出可供查阅。

请参见

错误 2000 - 2999

错误 8000 - 8999

将错误报告给您的主要支持提供者


错误 8952

严重级别 16
消息正文

表错误：数据库 ''%1!''，索引 ''%2!.%3!''（ID %4!）（索引 ID %5!）。下列键的键多余或无效：

解释

该错误信息表明一个或多个索引损坏，必须进行修复或除去。

对策

通过执行带有 REPAIR_ALLOW_DATA_LOSS、REPAIR_FAST 或 REPAIR_REBUILD 子句的 DBCC CHECKDB 来修复索引。若要确定最符合需要的修复子句，执行前请参考 DBCC CHECKDB。

重要 如果执行带有修复子句之一的 DBCC CHECKDB 未更正索引问题，或者您不确定带有修复子句的 DBCC CHECKDB 对数据的作用，请与您的主要支持提供者联系。

请参见

DBCC CHECKDB

错误 8956

将错误报告给您的主要支持提供者


错误 8956

严重级别 16
消息正文

索引行 (%1!:%2!:%3!)（其值为 %4!）指向由 %5! 标识的数据行。

解释

如果 Microsoft® SQL Server™ 返回该错误信息，通常是在错误 8952 之后。

该错误信息表明一个或多个索引损坏，必须进行修复或除去。

对策

通过执行带有 REPAIR_ALLOW_DATA_LOSS、REPAIR_FAST 或 REPAIR_REBUILD 子句的 DBCC CHECKDB 来修复索引。若要确定最符合需要的修复子句，执行前请参考 DBCC CHECKDB。

重要 如果执行带有修复子句之一的 DBCC CHECKDB 未更正索引问题，或者您不确定带有修复子句的 DBCC CHECKDB 对数据的作用，请与您的主要支持提供者联系。

请参见

DBCC CHECKDB

错误 8952

将错误报告给您的主要支持提供者


错误 8976

严重级别 16
消息正文

表错误：对象 ID %1!，索引 ID %2!。在扫描操作中未发现页 %3!，而其父代 %4! 和上一页 %5! 引用了该页。请检查先前的错误。

解释

该错误表示页未分配给引用它的对象。当使用索引时，Microsoft® SQL Server™ 会返回错误 605 或错误 823。

注意 这属于严重错误。数据可能损坏。

遇到错误 8976 的页不得包含在数据库备份中，因为数据库备份是通过读取分配页而不是遍历页链执行的。备份数据库之前先更正该错误。

对策

如果有已知的干净备份，请从该备份还原数据库。

如果没有干净的备份，请使用 DBCC CHECKDB 或 DBCC CHECKFILEGROUP 以确定问题的范围。然后使用带适当的修复子句的 DBCC CHECKDB 修复损坏的部分。如果对象 ID 为 1 或 2，并且索引 ID 为 1，或者表为 sysfiles1，则 DBCC CHECKDB 无法修复该页。

注意 如果执行带有修复子句之一的 DBCC CHECKDB 未更正索引问题，或者您不确定带有修复子句的 DBCC CHECKDB 对数据的作用，请与您的主要支持提供者联系。

对于索引（0 < 索引 ID < 255）

可以通过除去并重建该索引解决这个问题。在索引重建后，运行 DBCC CHECKALLOC 以验证问题是否已不再存在。如果问题仍然存在，请与您的主要支持提供者联系。

请参见

DBCC CHECKALLOC

DBCC CHECKDB

DBCC CHECKFILEGROUP

将错误报告给您的主要支持提供者


错误 8986

严重级别 16
消息正文

发现的错误数目 (%1!) 太多（属于对象 ID %2!）。若要查看所有的错误信息，请用 "WITH ALL_ERRORMSGS" 重新运行该语句。

解释

当打印该对象（来自 checkdb）上的消息正文时，已超过对于给定对象将报告的最大错误数限制。当前，该硬编码限制为 200。

对策

可以指定附加语句"WITH ALL_ERRORMSGS"以获得该对象的完整错误列表。


错误 9002

严重级别 19
消息正文

数据库 ''%1!'' 的日志已满。请备份该数据库的事务日志以释放一些日志空间。

解释

指定的事务日志文件已用尽可用空间。

对策

若要获得更多的空间，可以释放相关数据库的事务日志文件所在的磁盘驱动器上的可用空间。释放磁盘空间允许恢复系统自动扩大日志文件。或者可以通过添加或扩大指定数据库的日志文件来获得空间。

释放磁盘空间

可以释放本地驱动器或另一个磁盘驱动器上的可用磁盘空间。释放另一个驱动器上的可用磁盘空间：

  1. 将可用磁盘空间不足的事务日志文件移动到另一个磁盘驱动器。

  2. 执行 sp_detach_db 分离数据库。

  3. 执行 sp_attach_db 附加数据库，指向被移动的文件。
添加日志文件

另一个解决办法是，使用 ALTER DATABASE 语句的 ADD FILE 子句向指定的数据库添加日志文件。或者通过使用 ALTER DATABASE 语句的 MODIFY FILE 子句，指定 SIZE 和 MAXSIZE 语法来扩大日志文件。添加额外的日志文件使现有的日志可以增长。

请参见

ALTER DATABASE

错误 9000-9999

扩充数据库

磁盘空间不足

sp_attach_db

sp_detach_db

sp_add_log_file_recover_suspect_db


错误 17050

严重级别 16
消息正文

在此 SQL Server 版本中忽略 ''%1!'' 选项。

解释

在 NTFS 分区上安装 Microsoft® SQL Server™ 时，确保 NTFS 文件的权限允许读/写访问。否则，该错误信息会出现在 Microsoft Windows NT® 应用程序日志（对于每次安装尝试）中。

对策

确保 NTFS 文件的权限允许读/写访问。此外，SYSTEM 帐户对计算机应当具有完全控制权限。建议每个使用该计算机的人都具有完全控制权限，但不共享 NTFS 分区。

请参见

错误 17000 - 17999

操作系统疑难解答


错误 18456

严重级别 14
消息正文

用户 ''%1!'' 登录失败。

解释

无权登录该服务器。

对策

与 sysadmin 固定服务器角色的成员联系以请求登录权限。

请参见

登录

安全管理


错误 18458

严重级别 14
消息正文

登录失败。已超过为此服务器提供 %1! 份许可证的最大同时连接用户数。应通过 Windows NT 控制面板中的"许可协议"应用程序获得并注册更多的许可证。

解释

当服务器设置为单一服务器许可，并且试图进行客户端连接的数量超过该服务器的客户端访问许可证的数量时，会出现该错误。

对策

获得更多的客户端访问许可证或减少同时尝试连接的客户端数量。

请参见

错误 18000 - 18999


错误 18459

严重级别 14
消息正文

登录失败。已超过访问 SQL Server 的工作站许可最大限制。

解释

当服务器设置为单机许可，并且试图从没有客户端访问许可证的客户端计算机连接时，会出现该错误。

对策

获得客户端计算机的客户端访问许可证。

请参见

桌面上的 SQL Server 2000 数据库

Windows 98 上的 SQL Server 2000 数据库

SQL Server 2000 的各种版本


读/写错误

消息正文

%s：遇到操作系统错误 %1! (%2!)

解释

当打开或关闭文件且 Microsoft® SQL Server™ 对指定磁盘位置读取或写入操作失败时发生读/写错误。这种失败通常由物理磁盘问题造成，如磁盘驱动器上的坏扇区或磁盘驱动器或控制器的故障。

对策

通过从磁盘名称与错误信息中指出的名称相同的 sysaltfiles 选择该行，来识别有数据库问题的设备：

USE master
GO
SELECT name, filename
FROM master..sysaltfiles
GO

该查询的输出应当提供损坏磁盘的物理名称。尽快检查磁盘并更正问题。

解决磁盘驱动器或控制器问题后重新启动 SQL Server。

如果发现磁盘驱动器已损坏，则从备份数据库中还原数据或考虑使用 DBCC CHECKDB。

请参见

sysaltfiles


错误日志信息

在查看错误日志时，会看见一个或多个这样的信息。

消息正文

获得 TransactionDispenserInterface 失败：XACT_E_TMNOTAVAILABLE。

解释

该信息是报告性错误信息，表明 Microsoft 分布式事务处理协调器 (MS DTC) 服务当前未在该服务器上运行，或者当前不可用。有关 MS DTC 的更多信息，请参见 Microsoft 分布式事务处理协调器文档。

消息正文

警告：服务器游标内存使用：%d 页。如果该信息反复出现，请参见疑难解答中错误日志信息主题。

解释

创建并打开了太多的游标，或者尚未释放的游标过多。建议不再需要游标时，尽快将其关闭并释放。有关更多信息，请参见游标。

在紧急情况下，系统管理员可能需要使用 KILL 命令终止未关闭或释放游标的连接。

消息正文

警告：SQL 高速缓存的内存使用：%d （页）。如果这种情况继续存在，请参见疑难解答中错误日志信息主题。

解释

Microsoft® SQL Server™ 高速缓存消耗内存并存放特殊的和准备好的 SQL 文本。如果 SQL Server 高速缓存超过服务器内存的一定页数，就会出现该信息。例如，如果一个或多个客户端准备大量 SQL 语句而未执行相应的未准备操作，则会出现该错误。缺乏相应的未准备操作可能是因为应用程序的设计问题、应用程序的错误或反复创建准备好的 SQL 文本。

如果服务器内存发生很大的变化，并且 SQL Server 高速缓存的内存消耗仍然很高，则会再次打印该信息。

向置疑的客户端警告服务器的内存处于较低等级，或者使用 KILL 终止置疑的连接。


MAPI 错误信息

这些 MAPI 错误值由"SQL 邮件"使用。

MAPI 常量 | 描述
MAPI_USER_ABORT | 用户终止。
MAPI_E_FAILURE | 常规 MAPI 错误。
MAPI_E_LOGIN_FAILURE | MAPI 登录失败。
MAPI_E_DISK_FULL | 磁盘已满。
MAPI_E_INSUFFICIENT_MEMORY | 内存不足。
MAPI_E_ACCESS_DENIED | 访问遭拒绝。
MAPI_E_TOO_MANY_SESSIONS | 会话过多。
MAPI_E_TOO_MANY_FILES | 指定的文件过多。
MAPI_E_TOO_MANY_RECIPIENTS | 指定的收件人过多。
MAPI_E_ATTACHMENT_NOT_FOUND | 找不到指定的附件。
MAPI_E_ATTACHMENT_OPEN_FAILURE | 附件打开失败。
MAPI_E_ATTACHMENT_WRITE_FAILURE | 附件写入失败。
MAPI_E_UNKNOWN_RECIPIENT | 未知的收件人：参数"%s"，收件人"%s"。
MAPI_E_BAD_RECIPTYPE | 收件人类型错误。
MAPI_E_NO_MESSAGES | 无消息。
MAPI_E_INVALID_MESSAGE | 消息无效。
MAPI_E_TEXT_TOO_LARGE | 文本过大。
MAPI_E_INVALID_SESSION | 会话无效。
MAPI_E_TYPE_NOT_SUPPORTED | 不被支持的类型。
MAPI_E_AMBIGUOUS_RECIPIENT | 收件人指定不清楚。
MAPI_E_MESSAGE_IN_USE | 消息正被使用。
MAPI_E_NETWORK_FAILURE | 网络故障。
MAPI_E_INVALID_EDITFIELDS | 编辑字段无效。
MAPI_E_INVALID_RECIPS | 收件人无效。
MAPI_E_NOT_SUPPORTED | 不支持。

请参见

SQL Server 和邮件集成

SQL 邮件帮助


DB-Library 的错误信息

本主题介绍了所有 DB-Library 错误信息和严重级别。本主题中的信息分成了两个表。下表按字母顺序列出了错误及其严重级别。DB-Library 错误严重度项下的表总结了错误的严重级别。与错误对应的数值传入当前安装的、用户提供的错误处理程序。有关创建错误处理程序的信息，请参见 dberrhandle。要访问这些错误定义，请在程序中包括 Sqlfront.h 和 Sqldb.h 头文件。

在 Sqlfront.h 头文件中定义了下列错误值。严重度为 EXCOMM 的错误还在 dberrstr 值后追加了网络相关的错误信息。此外，EXCOMM 错误在 oserr 和 oserrstr 中具有网络特定的错误信息。

错误号 | 错误/ 错误严重度 | 描述
10000 | SQLEMEM EXRESOURCE | 无法分配足够的内存。
10001 | SQLENULL EXPROGRAM | 遇到 NULL DBPROCESS 指针。
10002 | SQLENLOG EXCONSISTENCY | 遇到 NULL LOGINREC 指针。
10003 | SQLEPWD EXUSER | 登录不正确。
10004 | SQLECONN EXCOMM | 无法连接:SQL Server 不可用或不存在。
10005 | SQLEDDNE EXINFO | DBPROCESS 处于不可用或未启用状态。
10006 | SQLENULLO EXCONSISTENCY | 尝试用 NULL LOGINREC 登录。
10007 | SQLESMSG EXSERVER | SQL Server 常规错误:请检查来自 SQL Server 的消息。
10008 (DB-Library) | SQLEBTOK EXCOMM | 来自 SQL Server 的错误令牌：数据流处理不同步。
10009 | SQLENSPE EXPROGRAM | DB-Library 常规非特定错误
10010 | SQLEREAD EXCOMM | 从 SQL Server 读取失败。
10011 | SQLECNOR EXPROGRAM | 列号超出了范围。
10012 | SQLETSIT EXINFO | 尝试用无效的时间戳调用 dbtsput。
10013 | SQLEPARM EXCONSISTENCY | DB-LIBRARY 函数引用中的参数无效。
10014 | SQLEAUTN EXPROGRAM | 要更新表的时间戳，但表中并没有时间戳列。
10015 | SQLECOFL EXCONVERSION | 数据转换导致溢出。
10016 | SQLERDCN EXCONVERSION | 请求的数据转换不存在。
10017 | SQLEICN EXPROGRAM | computeid 的值无效，或计算列号无效。
10019 | SQLENTXT EXPROGRAM | 尝试从非文本列获取文本指针/时间戳。
10020 | SQLEDNTI EXPROGRAM | 尝试用 dbtxtsput 将新的文本时间戳放入某列中，但该列的数据类型既不是 SQLTEXT，也不是 SQLIMAGE。
10021 | SQLETMTD EXPROGRAM | 尝试通过 dbmoretext 发送过多 TEXT 数据。
10022 | SQLEASEC EXPROGRAM | 尝试将空命令缓冲区发送给 SQL Server。
10023 | SQLENTLL EXUSER | LOGINREC 字段的名称过长。
10024 (DB-Library) | SQLETIME EXTIME | SQL Server 连接超时。
10026 | SQLEMODE EXCOMM | 网络连接模式不正确 — SQL Server 连接无效。
10027 | SQLEOOB EXCOMM | 将超带宽数据发送给 SQL Server 时出错。
10028 | SQLEITIM EXPROGRAM | 指定的超时设定值不合法。
10029 | SQLEDBPS EXRESOURCE | 已分配了最大数量的 DBPROCESS。
10030 | SQLEIOPT EXPROGRAM | 尝试使用无效的 dboption。
10031 | SQLEASNL EXPROGRAM | 尝试在空 LOGINREC 字段中设置字段。
10032 | SQLEASUL EXPROGRAM | 尝试设置未知的 LOGINREC 字段。
10033 | SQLENPRM EXPROGRAM | 此 dboption 不允许使用 NULL 参数。
10034 | SQLEDBOP EXPROGRAM | dbn 参数无效或超出了范围。
10035 | SQLENSIP EXPROGRAM | 传递给 dbstrcpy 的是负起始索引。
10036 | SQLECNULL EXPROGRAM | 不允许使用 NULL 目的变量。
10037 | SQLESEOF EXCOMM | 来自 SQL Server 的异常 EOF。
10038 | SQLERPND EXPROGRAM | 尝试启动新的 SQL Server 操作，结果未决。
10039 | SQLECSYN EXCONVERSION | 尝试转换源字段中因语法错误而停止的数据。
10040 | SQLENONET EXCOMM | 未装载 DB-Library 网络通信层。
10041 | SQLEBTYP EXPROGRAM | 未知绑定类型被传递给 DB-Library 函数。
10042 | SQLEABNC EXPROGRAM | 尝试绑定不存在的列。
10043 | SQLEABMT EXPROGRAM | 用户通过不匹配的列和变量类型尝试 dbbind。
10044 | SQLEABNP EXPROGRAM | 尝试使用 NULL 指针绑定。
10045 | SQLEBNCR EXPROGRAM | 尝试将用户变量绑定到不存在的计算行。
10046 | SQLEAAMT EXPROGRAM | 用户通过不匹配的列和变量类型尝试 dbaltbind。
10047 | SQLENXID EXNONFATAL | 服务器未分配分布事务 ID。
10048 | SQLEIFNB EXPROGRAM | 传递给 bcp_control 的字段号不合法。
10049 | SQLEKBCO EXINFO | 成功进行了大容量复制，已总共将 1000 行复制到主文件中。
10050 | SQLEBBCI EXINFO | 成功进行了大容量复制，已将批处理复制到 SQL Server 中。
10051 | SQLEKBCI EXINFO | 已将 1000 发送到 SQL Server 中。
10052 | SQLEBCWE EXNONFATAL | 写入 bcp 数据文件时发生 I/O 错误。
10053 (DB-Library) | SQLEBCNN EXUSER | 尝试将空值大容量复制到不接受空值的服务器列。
10054 (DB-Library) | SQLEBCOR EXCONSISTENCY | 尝试将过大的行大容量复制到 SQL Server。
10055 | SQLEBCPI EXPROGRAM | 在任何其它 bcp 例程之前调用 bcp_init。
10056 | SQLEBCPN EXPROGRAM | 仅在调用 bcp_init 之后使用 bcp_bind、bcp_collen 和 bcp_colptr，将复制方向设置为 DB_IN。
10057 | SQLEBCPB EXPROGRAM | 不要在已将非空输入文件名传递到 bcp_init 之后使用 bcp_bind。
10058 | SQLEVDPT EXUSER | 在对变长数据进行大容量复制之前，必须对其指定长度前缀或终止符。
10059 | SQLEBIVI EXPROGRAM | 只能在将有效输入文件传递给 bcp_init 之后，才能使用 bcp_columns 和 bcp_colfmt。
10060 | SQLEBCBC EXPROGRAM | 在 bcp_colfmt 之前调用 bcp_columns。
10061 | SQLEBCFO EXUSER | 主文件必须至少包含一列：bcp。
10062 | SQLEBCVH EXPROGRAM | 只有将有效主文件传递给 bcp_init 之后，才能调用 bcp_exec。
10063 | SQLEBCUO EXRESOURCE | 无法打开主数据文件：bcp。
10064 | SQLEBUOE EXRESOURCE | 无法打开错误文件：bcp。
10065 | SQLEBWEF EXNONFATAL | 在写入 bcp 错误文件时发生 I/O 错误。
10066 | SQLEBTMT EXPROGRAM | 尝试用 bcp_moretext 发送太多的文本数据。
10067 | SQLEBEOF EXNONFATAL | 在 bcp 数据文件中遇到意外的 EOF。
10068 | SQLEBCSI EXCONSISTENCY | 只有在复制到服务器中时，才能跳过主文件列。
10069 | SQLEPNUL EXCONSISTENCY | 遇到 NULL 程序指针。
10070 | SQLEBSKERR EXCONSISTENCY | 无法在数据文件中查找。
10071 | SQLEBDIO EXPROGRAM | 错误的大容量复制方向。
10072 | SQLEBCNT EXUSER | 尝试对不存在的服务器表使用大容量复制。
10073 | SQLEMDBP EXPROGRAM | 尝试将 DBPROCESS 的最大数目设置为小于 1 的数。
10075 | SQLCRSINV EXPROGRAM | 游标语句无效。
10076 | SQLCRSCMD EXPROGRAM | 在还有等待执行的命令时，尝试调用游标函数。
10077 | SQLCRSNOIND EXINFO | 游标语句涉及到的表中有一个没有唯一索引。
10078 | SQLCRSDIS EXPROGRAM | 游标语句包含以下不允许的短语之一：COMPUTE、UNION、FOR BROWSE 或 SELECT INTO。
10079 | SQLCRSAGR EXPROGRAM | 在游标语句中不允许使用聚合函数。
10080 | SQLCRSORD EXPROGRAM | 只有完全的键集驱动游标才能具有 ORDER BY、GROUP BY 或 HAVING PHRASES。
10081 | SQLCRSMEM EXPROGRAM | 键集或窗口滚动大小超出了本机的内存限制。
10082 | SQLCRSBSKEY EXPROGRAM | 在具有上一个提取类型的混合游标中，键集不能反向滚动。
10083 | SQLCRSNORES EXINFO | 游标语句没有生成任何结果。
10084 | SQLCRSVIEW EXPROGRAM | 在游标语句中，不能将一个视图与另一个表或视图进行联接。
10085 | SQLCRSBUFR EXPROGRAM | 不应在使用游标函数时开启行缓冲。
10086 | SQLCRSFROWN EXINFO | 要提取的行号不在有效范围之内。
10087 | SQLCRSBROL EXPROGRAM | 不能在正向滚动的游标中使用反向滚动。
10088 | SQLCRSFRAND EXPROGRAM | 只能在键集驱动游标的键集内使用 RANDOM 和 RELATIVE 提取类型。
10089 | SQLCRSFLAST EXPROGRAM | LAST 提取类型要求使用完全键集驱动游标。
10090 | SQLCRSRO EXPROGRAM | 在 READONLY 游标中不能进行数据锁定或更改操作。
10091 | SQLCRSTAB EXPROGRAM | 必须在涉及数据锁定或修改的操作中确定表名。
10092 | SQLCRSUPDTAB EXPROGRAM | 使用绑定变量进行更新或插入操作时需要单个表的游标。
10093 | SQLCRSUPDNB EXPROGRAM | 绑定类型是 NOBIND 时，更新或插入操作无法使用绑定变量。
10094 | SQLCRSVIIND EXPROGRAM | 游标语句中使用的视图不包括基础表中的所有唯一索引列。
10095 | SQLCRSNOUPD EXINFO | 更新或删除操作没有影响任何行。
10096 | SQLCRSOS2 EXPROGRAM | 此服务器不支持游标。
10097 | SQLEBCSA EXPROGRAM | BCP 主文件 %s 只包含 %ld 行。不允许跳过所有这些行。
10098 | SQLCRSRO EXPROGRAM | 在 READONLY 游标中不能进行数据锁定或更改操作。
10099 | SQLEBCNE EXPROGRAM | 表 %s 只包含 %ld 行。向上复制到 %ld 行是不可能的。
10100 | SQLEBCSK EXPROGRAM | 表 %s 只包含 %ld 行。不允许跳过所有这些行。
10101 | SQLEUVBF EXPROGRAM | 尝试读取 bcp 格式文件的未知版本。
10102 | SQLEBIHC EXPROGRAM | 在 bcp 格式文件中找到不正确的主列号。
10103 | SQLEBWFF EXRESOURCE | 在读取 bcp 格式文件时发生 I/O 错误。
10104 | SQLNUMVAL EXPROGRAM | 存储在 DBNUMERIC/DBDECIMAL 结构中的数据无效。
10105 | SQLEOLDVR EXPROGRAM | 对于此 DB-Library 版本，SQL Server 的 TDS 已过时。


DB-Library 错误严重度

下表列出了所有错误严重度，以及每种严重度的等价数字和错误类型的解释。发生错误或发出消息时，这些等价数字将传递到当前安装的、用户提供的错误处理程序中。

错误严重级别在 Sqlfront.h 头文件中定义。如果程序引用这些严重级别，则必须包含 Sqlfront.h 文件。

错误严重度 | 严重度数字 | 描述
EXINFO | 1 | 信息，非错误。
EXUSER | 2 | 用户错误。
EXNONFATAL | 3 | 非严重错误。
EXCONVERSION | 4 | DB-Library 数据转换中的错误。
EXSERVER | 5 | 服务器已返回了错误标志。
EXTIME | 6 | 等待服务器响应时超过超时时段 — DBPROCESS 仍是活动的。
EXPROGRAM | 7 | 用户程序中的代码错误。
EXRESOURCE | 8 | 资源用尽 — DBPROCESS 可能处于不可用状态。
EXCOMM | 9 | 服务器通讯出错 — DBPROCESS 处于不可用状态。
EXFATAL | 10 | 严重错误 — DBPROCESS 处于不可用状态。
EXCONSISTENCY | 11 | 软件内部错误 — 通知主要支持提供者。

请参见

将错误报告给您的主要支持提供者


错误 10008 (DB-Library)

严重级别 9
消息文本

来自 SQL Server 的错误令牌:数据流处理不同步。

解释

当 DB-Library 无法解释从 Microsoft® SQL Server™ 发送的表格格式数据流 (TDS) 时，发生此错误。DB-Library 应用程序使用 TDS 通过网络与 SQL Server 通讯。TDS 是在 SQL Server 和 DB-Library 客户端之间进行数据和其它消息通讯的一种规范。SQL Server 和 DB-Library 客户端使用的网络库，通过特定的网络协议为 TDS 传输提供接口。只要有支持网络协议的适当接口网络库，则不论是命名管道连接，还是套接字连接，所使用的网络协议均与 TDS 无关。每个 DB-Library 应用程序均自动分析此 TDS，以提取有用的信息（例如，查询结果集）或以可以相互理解的格式生成对 SQL Server 的请求或 SQL Server 响应。

产生此错误的主要原因有两个：

  • 由 SQL Server 通过网络命名管道或套接字发送的数据已损坏。这通常是由于与网络硬件或软件相关的网络问题造成的。

  • 网络可以生成对 DB-Library 来说未知的错误或消息；因此，会生成此错误。
对策

检查 Windows NT 事件查看器系统和应用程序日志。这些日志可能提供一些信息，表明问题是否与服务器网络协议、网卡或系统配置相关。在应用程序日志或 SQL Server 错误日志中审阅 SQL Server 特定的项，找出客户端上发生 10008 错误时所对应的有关的网络相关错误。如果这种审阅所提供的信息不足以解决问题，则有必要使用专门的网络监视工具并对客户端配置进行审阅。

如果问题依然存在，请与主要网络支持提供者联系获得帮助。

程序员使用 SQL Server Programmer's Toolkit（用于 DB-Library）可以处理错误 10008，方法是添加条件语句，测试出现此错误的情况。在 DB-Library 错误处理程序中看到错误 10008 时，可进行的其它处理包括：关闭当前的 DBPROCESS 连接，打开新连接连接，然后重新发送查询。

请参见

Programming DB-Library for C

将错误报告给您的主要支持提供者


错误 10024 (DB-Library)

严重级别 6
消息文本

SQL Server 连接超时。

解释

当应用程序到 Microsoft® SQL Server™ 的连接的查询超时设置太慢时，从 DB-Library 返回此错误信息。当完成查询所需要的时间长于分配时间时，查询将终止。

对策

检查应用程序的配置设置，提高查询超时设置。如果这是一个自定义应用程序，可使用 dbsettime() 函数调整查询超时设置。

请参见

Programming DB-Library for C


错误 10053 (DB-Library)

严重级别 2
消息文本

尝试将空值大容量复制到不接受空值的服务器列。

解释

尝试将空值大容量复制到不接受空值的表列。通常在上一次大容量复制后，列从 NULL 更改为 NOT NULL 发生此错误。

对策

如果正在大容量复制的源文件是字符数据，则该文件可进行编辑，列值更改为列定义的适当值。也可以更改表的当前定义，或用允许空值的列定义创建一个单独的表。

请参见

Programming DB-Library for C


错误 10054 (DB-Library)

严重级别 11
消息文本

尝试将过大的行大容量复制到 SQL Server。

解释

当源数据文件中的行与为目的数据库表定义的行不匹配时，在进行大容量复制操作时发生此错误。缺少行尾标记可能导致发生此错误。如果源数据文件中的列分隔符比目的数据库表中当前存在的列分隔符多，或者，如果源数据文件已损坏，也可能发生此错误。

对策

验证源数据文件与数据库表列定义是否相匹配，或者创建一个新表，与当前的数据文件匹配，将数据大容量复制到数据库中，然后使用 Transact-SQL 语句操作这些数据。

可以创建源数据文件或创建格式文件来简化数据传输。操作基于字符的数据文件时，可以使用能够容纳数据文件，并且在执行保存操作时不会添加特殊的隐藏字符的文本编辑工具。然后，可使用该编辑工具操作源数据文件，方法是在必要时添加或删除字符，使源数据文件与表定义相匹配。也可以创建一个格式文件。所生成的格式文件可以用文本编辑工具操作并进行更改，以便忽略源数据文件中的字符位置/列。操作本机格式文件比较困难。

由于除字符型外的二进制类型格式的数据类型存储的缘故，本机格式源数据文件和/或格式文件的操作方法是很有限的。用任何编辑工具操作这种文件类型都很困难，而生成和操作格式文件更为困难。可以使用 -F 或 -L 命令行标记指定源数据文件中要大容量复制到 SQL Server 中的第一行和最后一行。如果源数据文件包含一些过大的行，则这些标志可用于大容量复制到过大行，接着进行从过大行之后的一行到数据文件尾的大容量复制操作。

如果无法解决此错误，请与主要支持提供者联系获得帮助。

请参见

bcp 实用工具

Programming DB-Library for C

将错误报告给您的主要支持提供者


分布式查询错误信息

本主题针对对不同的 OLE DB 提供程序进行的分布式查询，讨论了疑难解答窍门和方法。针对一个 OLE DB 提供程序的错误条件，Microsoft® SQL Server™ 输出错误信息的这些集合：

  • 提供程序错误信息（由用方括号括起来的一个或多个错误信息表示），由 OLE DB 提供程序返回。

  • SQL Server 错误信息。

SQL Server 使用 OLE DB 提供程序的错误对象及其接口返回提供程序错误信息。如果提供程序不支持给定错误上下文的错误对象及其接口，则不提供提供程序错误信息。

除使用这些错误信息主题解决分布式查询的问题外，使用 SQL 事件探查器跟踪 OLE DB Errors 事件类。OLE DB Errors 事件类为返回错误的提供程序输出 OLE DB 接口和方法，并输出由方法调用返回的错误代码。可以在 Oledberr.h 头文件（位于 SQL Server 目标安装目录的 \DevTools\Include 目录，默认情况下是 C:\Mssql）中查阅十六进制错误代码，确定错误代码的含义，默认情况下，OLE DB Errors 事件类在 SQL 事件探查器中不出现。有关用 SQL 事件探查器查看 OLE DB Errors 事件类和其它高级错误的更多信息，请参见创建并管理跟踪和模板。

此表列出了所有分布式查询错误信息。

错误 | 严重度 | 描述
7303 | 16 | 未能初始化 OLE DB 提供程序 ''%1!'' 的数据源对象。%ls。
7306 | 16 | 未能打开表 ''%1!''（来自 OLE DB 提供程序 ''%2!''）。%ls。
7314 | 16 | OLE DB 提供程序 ''%1!'' 不包含表 ''%2!''。
7321 | 16 | 准备对 OLE DB 提供程序 ''%1!'' 执行查询时出错。%ls。
7356 | 16 | OLE DB 提供程序 ''%1!'' 为列提供的元数据不一致。执行时更改了元数据信息。
7357 | 16 | 未能处理对象 ''%1!''。OLE DB 提供程序 ''%2!'' 指出该对象中没有任何列。
7391 | 16 | 操作未能执行，因为 OLE DB 提供程序"%ls"不支持分布式事务。
7392 | 16 | 未能为 OLE DB 提供程序 ''%1!'' 启动事务。
7399 | 16 | OLE DB 提供程序 ''%1!'' 报错。%ls。
7403 | 16 | 未能找到 OLE DB 提供程序 ''%1!'' 的注册表项。
7413 | 16 | 未能执行 Windows 验证登录，因为委托不可用。
8114 | 16 | 将数据类型 %1! 转换为 %2! 时出错。
8501 | 16 | 服务器 ''%1!'' 上的 MS DTC 不可用。


用于 C 语言的嵌入式 SQL 的错误信息

开发并运行用于 C 语言的嵌入式 SQL (ESQL/C) 程序时，将看到不同的状态和错误信息。ESQL/C 返回的所有消息号均为负数。

下表中的消息由 ESQL/C 生成。因为这些消息不是由 Microsoft® SQL Server™ 生成的，所以在 sysmessages 表中不显示。

消息号 | 运行时/ 编译时 | 描述
4998 | C | 尝试连接到特定的数据库服务器失败。
19031 | C | 无法打开绑定文件。
19051 | C | 节过多。
19101 | R | 语句太长。
19103 | R | 非法的 %s 值 %s。 非数字 %s 值 %s。 （无效的超时值数字。）
19104 | R/C | 错误的 SQL 语句语法。
19199 | C | 在 PREPARE 语句中检测到 ESQL 关键字。
19306 | C | 使用了宿主变量，但未声明。
19313 | R | 宿主变量太少。
19324 | C | 在此上下文中不可以使用宿主变量。
19408 | R | 用于 SQL_TYP_DECIMAL 的 SQL 数据类型无效。
19413 | R | 在进行 decimal 数据转换时发生数据溢出。
19422 | R | 未知的 SQL Server 数据类型。
19423 | R | 无效的目的数据类型。
19501 | R | 未声明游标。
19505 | C | 重复的游标名称：%s。
19508 | R | 游标未放在行上。
19514 | R | 游标未准备好。
19517 | R | 尝试为非 SELECT 准备的语句打开游标。
19521 | R | 为计划的 %d 节打开游标失败。
19523 | R | 定位/关闭游标失败。节 %d，计划 %s。
19524 | R | 此游标的表是不可更新的。
19525 | R | 尝试提取未打开的游标。
19526 | R | 没有此游标的访问计划。
19527 | R | 无法获得此游标的节。
19528 | R | 计划 %s 的 %d 节的连接有 NULL DBPROCESS。
19701 | R | NULL 连接名称。
 |  | 没有找到连接 %s。
19702 | R | 没有找到连接名。
 |  | 尝试关闭不存在的连接。
19703 | R | 获取 DBPROCESS 失败。 自动连接失败。
19706 | R | 在节 %d 中登录失败。
19707 | R | 重复的连接名。
19822 | R | 不适当的初始化用户 SQLDA。
19911 | C | 为宿主变量指定的 SQL 数据类型无效。
19913 | C | 令牌标识符已在使用。
19917 | C | sqlainit() 的选项无效或不正确。
19946 | C | 未声明 %s 游标。
19953 | C | 调用类型无效。
19955 | R | 在 %s 节 %u 中没有找到文本。
19956 | R | 没有找到访问计划节或语句文本。
19957 | R | 没有找到访问计划或语句文本。
19994 | R | 不能运行下一个 BEGIN DECLARE 节。已忽略语句。
19995 | R | 遇到了 END DECLARE，但没有前面的 BEGIN DECLARE 语句。已忽略语句。
19999 | C | 发生内部错误。

请参见

用于 C 语言的嵌入式 SQL 程序设计


SQL Server 企业管理器错误信息

本节包含对与 SQL Server 企业管理器相关的许多错误信息的解释和更正对策。


不支持 <0s>。

消息正文

不支持 <0s>。

解释

输入的语法有效，但 SQL Server 企业管理器不能直观地支持该语法。

对策

请确保在保存前验证语法。

请参见

查询基础知识


<0s> 无法用于该查询类型。

消息正文

<0s> 无法用于该查询类型。

解释

对于选定的查询类型，不允许正在尝试的操作。

对策

验证查询语法或更改查询类型。

请参见

查询基础知识


关系中包含的列数不能多于 '<0d>'。

消息正文

关系中包含的列数不能多于 '<0d>'。

对策

当定义外键关系时，选择的列要少于 16 个。

请参见

创建和修改 PRIMARY KEY 约束

主键约束


无法将该表达式添加到选择列表。

消息正文

无法将该表达式添加到选择列表。

解释

对选择列表中所允许的表达式有限制。正尝试添加的表达式可能无效。

对策

请验证表达式的语法是否正确。表达式的类型可能无效。

请参见

表达式

在表达式中使用运算符


修改列属性时出错。

当约束表达式中含有错误时将显示该错误信息。

ODBC 错误文本

[Microsoft][ODBC SQL Server Driver][SQL Server] 在此上下文中，名称 '[column value]' 是非法的。此处只允许常量、常量表达式或变量。列名是非法的。

解释

为字符列定义的默认值没有包括在单引号 (') 中。

对策

将数据库列"默认值"单元中的值用单引号引起来，然后保存表。

请参见

ALTER TABLE

列属性

创建和修改 DEFAULT 定义

修改列属性


非法表达式列表使用。

消息正文

非法表达式列表使用。

解释

查询的语法中有错误。SQL Server 企业管理器已尝试定位错误源。

对策

在运行查询前检查查询的语法并更正错误。

请参见

表达式

用 WHERE 和 HAVING 筛选行

查询基础知识


必须更新指定的 Meta Data Services 知识库数据库中的信息模型，以便能够保存该 DTS 包版本

消息正文

必须更新指定的 Meta Data Services 知识库数据库中的信息模型，以便能够保存该 DTS 包版本

解释

升级到 Microsoft® SQL Server™ 2000 并不会安装数据转换服务 (DTS) 所要求的 SQL Server 2000 Meta Data Services 信息模型，于是就会在保存到 Meta Data Services 时出现该错误。该错误发生在从 SQL Server 7.0 版升级到 SQL Server 2000 之后。如果执行新的安装，或是将 DTS 包作为结构化存储文件或 Microsoft Visual Basic® 文件存储在 SQL Server 中，则不会发生该错误。

对策

必须将 Meta Data Services 信息模型升级为 DTS 所预期的版本。有关升级该信息模型的更多信息和说明，请参见 DTS 信息模型。


数据库中不存在 <0s> 对象。

消息正文

数据库中不存在 <0s> 对象。

解释

查询的语法中有错误。SQL Server 企业管理器已尝试定位错误源。

对策

在运行查询前检查查询的语法并更正错误。

请参见

表达式

用 WHERE 和 HAVING 筛选行

查询基础知识

使用选择列表


每个表只能有一个 ROWGUIDCOL 列。

消息正文

每个表只能有一个 ROWGUIDCOL 列。

解释

已尝试分配多个 ROWGUIDCOL。ROWGUIDCOL 是与 IDENTITY 相似的特殊属性，只允许每个表有一个 ROWGUIDCOL。

请参见

设置列属性

数据库设计器


SQL 验证。

消息正文

SQL 验证。

解释

已成功验证 SQL。

请参见

表达式

用 WHERE 和 HAVING 筛选行

查询基础知识

使用选择列表


系统错误。

疑难解答

系统错误

当超出不受 SQL Server 企业管理器控制的 Microsoft® SQL Server 的限制时，在"保存不完全"对话框中会出现两条系统错误。

ODBC 错误文本

[Microsoft][ODBC SQL Server Driver][SQL Server] 无法在数据库 'Guest' 中为对象 'Syslogs' 分配空间，原因是 'logsegment' 段已满。如果 Syslogs 中的空间用完，请转储事务日志。否则，请使用 ALTER DATABASE 或 sp_extendsegment 增加该段的大小。

解释

该错误发生的原因是没有足够的日志空间来完成事务。

对策
  • 遵照消息中的建议操作并删除事务日志。（通常情况下这一对策并不能完全解决该问题。）

  • 增加数据库的大小以容纳所做更改。对于大的数据库，如果所做的更改要求重新创建表（比如，改变一列数据的类型或大小），则单纯使用 SQL Server 企业管理器可能无法做到。这时可能需要使用一些不需要事务即可传送数据的方法，如大容量复制（bcp 实用工具）。
ODBC 错误文本

[Microsoft][ODBC SQL Server Driver] 超时已过期。

解释

当用任何 Transact-SQL 更改来更新数据库时，可能会发生超时。

对策
  • 稍后重新尝试保存关系图或选定的表。

  • 保存更改脚本并在以后将其应用于数据库。

  • 增加 SQL 查询超时值并尝试重新保存关系图或选定的表。

增加 SQL 查询超时值

  1. 从"工具"菜单中选择"选项"命令。

  2. 在左窗格中单击"数据工具"，然后单击"数据视图"。

  3. 在 SQL 查询超时框中键入一个新值。

请参见

ALTER DATABASE

物理数据库文件和文件组

远程查询超时选项

保存更改脚本

sp_configure


当前的 ODBC 驱动程序版本无效。

消息正文

当前的 ODBC 驱动程序版本无效。

解释

ODBC 驱动程序不是当前版本。

对策

为获得最佳效果，请使用 Microsoft® SQL Server™ 安装提供的 ODBC 驱动程序。

有关更多信息，请参见 ODBC 文档。


外联接运算符 (+) 在 QBE 中无法使用。

消息正文

外联接运算符 (+) 在 QBE 中无法使用。

解释

查询的语法中有错误。SQL Server 企业管理器已尝试定位错误源。

对策

在运行查询前检查查询的语法并更正错误。

请参见

联接基础知识

Transact-SQL 联接


对于此种类型的查询，查询设计器无法支持一个以上的数据源。

消息正文

对于此种类型的查询，查询设计器无法支持一个以上的数据源。

解释

该查询类型只能使用一个数据源。

请参见

查询基础知识


没有足够的列与子查询选择列表相匹配。

消息正文

没有足够的列与子查询选择列表相匹配。

解释

SELECT 语句包含的列数必须与嵌入式子查询返回的列数相同。

请参见

表达式

查询基础知识

子查询基础知识

使用选择列表


无法添加约束。

当新的约束在现有的数据上失败或者约束表达式含有错误时，即显示该错误信息。将出现在"保存不完全"对话框中的 ODBC 错误文本与下面显示的错误文本相比较以确定适当的解决方案。

ODBC 错误文本

[Microsoft][ODBC SQL Server Driver][SQL Server] 数据库 '[database name]' 的表 '[table name]' 中的数据违反所添加的 CHECK 约束 '[constraint name]'。ALTER 命令已终止。

[Microsoft][ODBC SQL Server Driver][SQL Server] 无法创建约束。请参见前面的错误。

解释

现有的数据与 Check 约束不匹配。

对策
  • 更改数据（例如，通过 SQL Server 企业管理器）以便与约束相匹配。

  • 对于该 Check 约束，清除"表"属性页中的"创建中检查现有数据"复选框。

  • 对于该 Check 约束，更改"表"属性页中的约束表达式。
ODBC 错误文本

[Microsoft][ODBC SQL Server Driver][SQL Server] 在约束定义中指定的列 '[column name]' 无效。

[Microsoft][ODBC SQL Server Driver][SQL Server] 无法创建约束。请参见前面的错误。

解释
  • "表"属性页上的 Check 约束表达式中的文本值没有括在单引号 (') 中。

  • 某个参与 CHECK 约束的列被重命名。比如，如果原有约束中含有表达式 (cityname = 'Paris')，并且您已将该列重命名为 city，那么就会看到同样的错误，所不同的是 'cityname' 将作为无效列显示在错误信息中。
对策

更正表达式并保存表。

ODBC 错误文本

[Microsoft][ODBC SQL Server Driver][SQL Server] 行 [line number]:'[operator]' 附近的语法不正确。

解释

为 CHECK 约束定义的表达式（在"表"属性页中）或默认约束（在"默认值"单元中）是无效的 Transact-SQL 语法。例如，CHECK 约束表达式中键入的是 'city equals Paris' 而不是 'city = Paris'。

对策

更正表达式并保存表。

请参见

数据库设计器

用 WHERE 和 HAVING 筛选行

查询基础知识

数据库对象


无法创建索引。

当新的索引在现有的数据上失败时，即显示该错误信息。

ODBC 错误文本

[Microsoft][ODBC SQL Server Driver][SQL Server] 在重复键上创建唯一索引已终止。主键是 '[primary key data]'。

[Microsoft][ODBC SQL Server Driver][SQL Server] 无法创建约束。请参见前面的错误。

解释

在"索引/键"属性页中创建了唯一索引，但是数据库中存在重复数据。位于短语"Primary key is"之后的值是 Microsoft® SQL Server™ 在创建索引时所发现的第一个重复值。

对策
  • 将重复值从数据库中删除（例如，通过 SQL Server 企业管理器）。

  • 更改"索引/键"属性页中的选项以允许索引中有重复行。

请参见

创建 SQL Server 索引

索引

UNIQUE 约束


无法创建关系。

当新的约束在现有的数据上失败时，即显示该错误信息。

ODBC 错误文本

[Microsoft][ODBC SQL Server Driver][SQL Server] 数据库 '[database name]' 的表 '[table name]' 中的数据违反所添加的 FOREIGN KEY 约束 '[constraint name]'。ALTER 命令已终止。

[Microsoft][ODBC SQL Server Driver][SQL Server] 无法创建约束。请参见前面的错误。

解释

现有数据使外键约束失败。

对策
  • 通过运行查询以显示所有与主键值不匹配的外键值，以此来更改使外键约束失败的数据。例如，若要在 employee 表的 job_id 列中查找与 jobs 表中的主键值不匹配的外键值，可运行具有下列 Transact-SQL 语法的查询：
    SELECT employee.emp_id, employee.job_id
FROM employee LEFT OUTER JOIN jobs ON employee.job_id = jobs.job_id
WHERE (jobs.job_id IS NULL)
  • 清除"关系"属性页中的"创建中检查现有数据"复选框。

请参见

约束

数据库设计器

用 WHERE 和 HAVING 筛选行

查询基础知识


无法修改表。

当新的约束在现有的数据上失败时，即显示该错误信息。将出现在"保存不完全"对话框中的 ODBC错误文本与下面显示的两个 ODBC 错误相比较以确定适当的解决方案。

ODBC 错误文本

[Microsoft][ODBC SQL Server Driver][SQL Server] 表 Tmp_ [table name] 中的列 [column name] 不可以为空。

解释

已经添加的新数据库列不允许空值并且没有提供默认值。所论及的表名将显示在"Tmp_"之后。

对策

修改列属性。或是选择 Allow Nulls 属性，或是键入"默认值"设置。

ODBC 错误文本

[Microsoft][ODBC SQL Server Driver][SQL Server] 试图向表 '[database name ] TMP_ [table name]' 的列 '[column name]' 中插入 NULL 值；列不允许空值。INSERT 失败。

[Microsoft][ODBC SQL Server Driver][SQL Server] 命令已终止。

解释

现有数据库列上的 Allow Nulls 属性已被清除，但是列中存在现有的空值。所论及的表名出现在"Tmp_"之后。

对策

到该列中选择 Allow Nulls 属性。

请参见

修改列属性


无法保留触发器。

当触发器文本引用了已被重命名、删除或指派了不同数据类型的列时，即显示该错误信息。

ODBC 错误文本

[Microsoft][ODBC SQL Server Driver][SQL Server] 无效的列名 '[column name]'。

- 无法保留触发器 '[trigger name]'。

解释

对表所做的某个更改要求重新创建表。在重新创建表时，附加在该表上的触发器也将自动重新创建。

对策

推荐的解决方案取决于对触发器引用的列所做更改的类型。

保留引用重命名列的触发器

  • 将列重命名为原来的名称，然后保存表。该操作将允许重新创建表。可以立即重命名列，再次保存表，然后编辑触发器以确定重命名的列。

保留引用已删除列的触发器

  1. 展开该触发器附加到的表。

  2. 右击要更改的触发器，并从快捷菜单中选择"打开"命令。

  3. 编辑触发器文本并保存触发器。

  4. 保存表或数据库关系图。

保留引用数据类型已更改的列的触发器

  1. 在数据库关系图中，单击"数据库关系图"工具栏中的"保存更改脚本"按钮。

  2. 打开更改脚本。

  3. 在"数据视图"中，展开不正确的触发器所附加到的表。

  4. 删除不正确的触发器。

  5. 为该表创建一个新触发器。

  6. 在更改脚本中，选择触发器文本。用以创建触发器的语句集的起始语句为 CREATE TRIGGER。

  7. 将选定的文本复制到"触发器"窗口中。

  8. 在工具栏上单击"保存"按钮。此操作将触发器保存到数据库中，同时将触发器添加到位于"表"文件夹的表中。

  9. 对于所要创建的每一个触发器，重复第 3 步到第 8 步。

请参见

创建触发器

触发器对象

触发器


无必要使用 CONVERT 函数。

消息正文

无必要使用 CONVERT 函数。

解释

查询的语法中有错误。SQL Server 企业管理器已尝试定位错误源。

对策

在运行查询前检查查询的语法并更正错误。

请参见

数据类型转换

表达式

用 WHERE 和 HAVING 筛选行

使用选择列表


不支持的 SQL。

消息正文

不支持的 SQL。

解释

查询的语法中有错误。SQL Server 企业管理器已尝试定位错误源。

对策

在运行查询前检查查询的语法并更正错误。

请参见

表达式

用 WHERE 和 HAVING 筛选行

使用选择列表


XML 错误信息

XML 错误信息分为以下几类：

  • 带批注的 XDR 架构中的错误

  • XPath 查询中的错误

  • 在 XPath 处理过程中检测到的 MSXML 错误


带批注的 XDR 架构中的错误

XDR 架构错误可分为以下几类：

  • 在架构处理过程中检测到的 XDR 架构错误

  • 通过 XPath 检测到的 XDR 架构错误
在处理带批注的 XDR 架构过程中检测到的 XDR 架构错误。

"架构：无法加载架构 %1。发生错误 (%2)"

带批注的架构无法加载。检查所示的架构文件位于预期的位置上并且您有访问它的权限。验证该架构正常且为有效的 XML。

"架构：重复的元素定义 (%1)"

"架构：在 %2 上重复的特性定义 (%1)"

"架构：在 %2 上重复的特性引用 (%1)"

"架构：重复的顶层特性定义 (%1)"

特性、元素定义或引用在架构中多次出现。删除有问题的重复。

"架构：在 %2 上丢失特性定义 (%1)"

"架构：丢失元素定义 (%1)"

所需的特性或元素从架构上丢失。添加所丢失的信息。

"架构：在 %2 上丢失 %1"

批注 (%1) 从架构中丢失。添加所丢失的批注。

（例如，<sql:relationship key-relation="T" foreign-relation="T" /> 是丢失的键和外键。）

"架构：%2 上预期得到 %1 的值"

批注 (%1) 的值为空。（例如 sql:field=""）。添加所丢失的值。

"架构：在 %2 上的 %1 值无效"

批注 (%1) 的值无效。（例如 sql:key-fields=" "）。更正该值。

"架构：不允许嵌套元素定义"

ElementType 中不能有 ElementType。

"架构：关系标记中不允许有内容"

关系标记只能含有特性 (<sql:relationship />)。

"架构：在关系标记上的未知特性 %1"

关系中的特性只能是：键、键关系、外键和外关系。XML 名称区分大小写。

"架构：在 %1 上的关系中的键/外键对所含的列数不同"

检查所示的关系标记上的键和外键特性的值。

（例如，<sql:relationship key-relation="T" foreign-relation="T" key="a b" foreign-key="x" /> 在键中有两列但在外键中仅有一列。）有嵌入空格的列名必须用方括号括起来 ([])。有关这方面内容请参见 SQL Server 联机丛书中解释关系的部分。

"架构：在 %2 上 %1 预期 '0' 或 '1'"

所示的特性为布尔型值。以"0"表示假，以"1"表示真。

"架构：在 %2 上的未知 XDR 类型 %1"

所示的类型不是有效的 XDR 类型。有关可用类型的完整列表，请参见 XML 数据降低规范。

"架构：在 %2 上的未知 SQL 类型 %1"

所示的数据类型不是有效的 SQL Server 数据类型。SQL Server 数据类型用以区别各种较大对象的二进制类型，所以必须是以下类型之一：binary、image、ntext 或 text

"架构：无效的名称/类型，预期字符串值"

名称或类型特性的值无效。

"架构：无效的架构 URL (%1)"

URL 无效。

"架构：未知的元素 %1"

可识别的架构元素只有：组、特性、元素、AttributeType 或 ElementType。

"架构：在元素/特性/AttributeType 中不允许有除关系之外的其它内容"

这些标记可以有特性或关系批注，但不能有其它内容。

"架构：无法推断 %1 的默认映射。它和它的任何祖先都未定义关系"

请参见文档中有关关系和默认映射的内容。元素或特性的关系映射无法确定。

"架构：不允许引用 %1。仅在 ElementType 之内允许架构元素/特性"

元素和特性标志仅可用在 ElementType 之内。

"架构：元素/特性名称 %1 无效"

该名称不是有效的 XML 元素或特性名称。

"架构：在元素/特性中预期 'type' 特性"

"架构：在 ElementType/AttributeType 中预期 'name' 特性"

某一架构项目丢失了类型或名称特性。（例如，<ElementType type="Oops" /> 会导致该错误；用户本应使用名称，而不是类型。<element name="Oops" /> 的错误与之类似）

"架构：在元素/特性中的无效 'type'"

"架构：在 ElementType/AttributeType 中的无效的 'name'"

该名称不是有效的 XML 元素/特性名称。

"架构：元素 %1 上不允许有混合内容。属性元素不能有子元素"

不支持属性元素上的混合内容。有关这方面内容请参见 SQL Server 联机丛书中定义属性元素的部分。[属性元素是指在 SQL Server 中映射到列的元素。显式映射通过字段批注给定，默认的（隐式）映射将随着 content="textOnly" 批注而产生（在这种情况下，列名即为元素名）。]

"架构：未能解析命名空间前缀 (%1)"

所用命名空间前缀在当前上下文中从未定义过（使用 xmlns:prefix="uri"）。

"架构：指定限制字段时 '%1' 上预期关系"

该限制字段批注用于限定联接。不能将它与关系一起使用，除非是在特性或元素上。

"架构：%1 不能用在 is-constant 元素 (%2) 上"

有关这方面内容请参见 SQL Server 联机丛书中解释 is-constant 批注的部分。Is-constant 元素中不能有字段或关系。

"架构：在 %1 中预期关系"

元素或特性需要一种关系。

"架构：在 %1 上的异常关系"

元素或特性中不能含有关系。

"架构：在 %1 上的无效关系"

有关这方面内容请参见 SQL Server 联机丛书中定义关系批注的部分。关系可因多种原因而无效。常见的原因有：

  • 第一个键关系必须映射到祖先的表中

  • 最后一个外关系必须是当前节点的表

  • 表和列的名称始终区分大小写

"架构：在 %1 上不允许映射字段。该批注可能仅适用于特性和属性元素"

该映射字段批注仅适用于在 SQL Server 中映射到列的节点上。这些特性和元素是以字段批注的元素或特性，或是带有 textOnly 内容的元素。

"架构：在特性 %1 上不支持从同一表到其自身的关系（自联接）"

在 SQL Server 2000 中不支持该关系。请考虑使用 is-constant 或其它关系。

"架构：需要一个基路径来解析外部架构的引用"

在无基路径的情况下引用外部架构。

"架构：不支持元素上的特性 %1"

"架构：不支持特性上的特性 %1"

"架构：不支持 ElementType 上的特性 %1"

"架构：不支持 AttributeType 上的特性 %1"

使用了无法识别的特性。有关元素、特性、ElementType 和 AttributeType 的使用，请参见 XML 数据降低规范。

通过 XPath 检测到的 XDR 架构错误

"架构： url-encode 批注需要在祖先或自身中有一个或多个键（在联接关系或键字段批注中指定）"

url-encode 批注导致生成一个直接对象查询。直接对象查询必须从单行中选择单列，这样就需要键信息以便从表中选择一行。键通过键字段和关系描述。url-encoded 节点或其祖先之一无键。

"架构：在 %1 和 %2 之间需要一个联接关系"

当一个元素及其子代映射到不同的表时，需要有一个关系。有关这方面内容请参见 SQL Server 联机丛书中解释关系批注使用的部分。

"架构：%1 与 %2 之间的联接关系无效"

有关这方面内容请参见 SQL Server 联机丛书中解释关系批注使用的部分。

"架构：批注 url-encode 和 use-cdata 是互斥的，不能与下列任何类型一起使用：id/idref/idrefs/nmtoken/nmtokens"

并非所有的批注都能彼此一起使用。将互斥批注之一删除。

"架构：在根元素 %1 上不允许映射字段批注"

顶级元素必须是映射的，否则为 is-constant。

"架构：在元素 %1 上需要一个关系"

有关这方面内容请参见 SQL Server 联机丛书中解释关系和默认映射的部分。无法确定该元素的关系映射。

"架构：不支持包含递归元素"

在 SQL Server 2000 中不支持递归。

"架构：is-constant 元素 %1 不能有特性"

在 is-constant 元素上不允许有特性。特性只能用在带有关系的元素上。


XPath 查询中的错误

以下是在 XPath 处理过程中检测到的 XPath 错误

"XPath：发生异常内部错误"

在典型处理过程中未料及。

"XPath：不能实例化 MSXML 类别工厂"

"XPath：所分析的 XPath 中含有一个异常值 (%1)。所安装的 MSXML2.DLL 的版本可能与 SQLXMLX.DLL 不兼容"

在典型处理过程中未料及。如果发生以下错误之一，则很可能是安装问题造成的。检查 SQLXMLX.DLL 和 MSXML2.DLL 是随 SQL Server 安装的版本。

"XPath：不支持 %1 轴"

"XPath：不支持 %1 节点测试"

"XPath：不支持 %1 函数"

"XPath：不支持 %1 运算符"

有关这方面内容请参见 SQL Server 联机丛书中解释在 SQL Server 2000 中所支持功能的部分。

"XPath：直接对象访问必须选择一列"

"XPath：只有直接对象访问有可能选择特性"

有关这方面内容请参见 SQL Server 联机丛书中解释直接对象访问的部分。只有在直接对象访问中才支持选择特性，因为该特性的值是返回的，而且不是有效的 XML。反过来，直接对象访问必须从单行中选择单列。

"XPath：不支持根选择 (/)"

有关这方面内容请参见 SQL Server 联机丛书中解释 XPath 限制的部分。

"XPath：不能从根中选择特性 %1。必须从包含的元素中选择"

不会有顶层特性。只有元素才有特性。

"XPath：不支持序号（数字）谓词"

有关这方面内容请参见 SQL Server 联机丛书中解释 XPath 限制的部分。

"XPath：参数 %1 未定义"

该参数已使用，但未在任何地方进行定义。

"XPath：不支持参数 %1 的类型。XPath 参数必须是 WSTR 类型"

XPath 查询中只支持值为字符串的参数。

"XPath：在架构中找不到 %1"

所命名的元素或特性在架构中不存在。

"XPath：无法执行到类型 %1 的转换"

有关这方面内容请参见 SQL Server 联机丛书中解释 XPath 数据类型的部分。

"XPath：无法对元素 %1 的文本内容进行评估"

"XPath：不支持在谓词中使用 idrefs/nmtokens %1"

有关这方面内容请参见 SQL Server 联机丛书中解释 XPath 限制的部分。命名元素未映射到该数据库中单行中的单列。

"XPath：不支持谓词中的不相关查询。有关详细内容请阅读文档"

有关这方面内容请参见 SQL Server 联机丛书中解释 XPath 限制的部分。在 SQL Server 2000 中不支持 XPath 矢量积。


在 XPath 处理过程中检测到的 MSXML 错误

"MSXML2：%1 是无效的或不受支持的 XPath"

XPath 中有错误或是包含 MSXML2 不支持的构造。


ODBC 错误信息

根据 X/Open 和 SQL Access Group SQL CAE 规范 (1992) 所进行的定义，SQLERROR 返回 SQLSTATE 值。SQLSTATE 值是包含五个字符的字符串。下表列出了驱动程序可以为 SQLError 返回的 SQLSTATE 值。

为 SQLSTATE 返回的字符串值由两个字符的类值后接三个字符的子类值组成。类值 01 表明是一种警告，后跟随 SQL_SUCCESS_WITH_INFO 的返回代码。只要类值不是 01（IM 除外），则表明是一种错误，后跟随 SQL_ERROR 的返回代码。类 IM 专门用于表明从 ODBC 实现产生的警告和错误。任何类中子类值 000 均用于实现给定类中所定义条件。这种类值和子类值的分配方法由 SQL-92 定义。

说明 通常由返回值 SQL_SUCCESS 表明成功执行了一个函数，但 SQLSTATE 00000 也表明成功执行。

SQLSTATE | ODBC API（驱动程序管理器）错误
00000 | 成功
01000 | 常规警告
01002 | 断开连接错误
01004 | 数据被截断
01006 | 未废除特权
01S00 | 无效连接字符串特性
01S01 | 行中的错误
01S02 | 选项值已更改
01S03 | 未更新或删除任何行
01S04 | 更新或删除了多行
01S05 | 取消操作被当成 FreeStmt/Close
01S06 | 设法在结果返回第一个行集之前进行提取
07001 | 参数个数错误
07006 | 违反受限制的数据类型特性
07S01 | 默认参数使用无效
08001 | 无法连接到数据源
08002 | 连接正在使用
08003 | 连接未打开
08004 | 数据源拒绝建立连接
08007 | 在执行事务的过程中连接失败
08S01 | 通讯链接失败
21S01 | 插入值列表与列列表不匹配
21S02 | 派生表的程度与列列表不匹配
22001 | 字符串数据右截断
22002 | 需要指示符变量，但未提供
22003 | 数字值超出范围
22005 | 分配时出错
22008 | Datetime 字段溢出
22012 | 被零除错误
22026 | 字符串数据，长度不匹配
23000 | 违反完整性约束
24000* | 无效的游标状态
25000 | 无效的事务状态
28000 | 无效的授权规范
34000 | 无效的游标名称
37000 | 语法错误或违规访问
3C000 | 重复的游标名称
40001 | 串行错误
42000 | 语法错误或违规访问
70100 | 操作终止
IM001 | 驱动程序不支持本函数
IM002 | 未找到源名称并且未指定默认驱动程序
IM003 | 无法装载指定的驱动程序
IM004 | 驱动程序的 SQLAllocEnv 失败
IM005 | 驱动程序的 SQLAllocConnect 失败
IM006 | 驱动程序的 SQLSetConnectOption 失败
IM007 | 未指定数据源或驱动程序；禁止对话
IM008 | 对话失败
IM009 | 无法装载转换 DLL
IM010 | 数据源名称过长
IM011 | 驱动程序名称过长
IM012 | DRIVER 关键字语法错误
IM013 | 跟踪文件错误
S0001 | 基表或视图已存在
S0002 | 未找到基表
S0011 | 索引已经存在
S0012 | 未找到索引
S0021 | 列已存在
S0022 | 未找到列
S0023 | 列无默认值
S1000 | 常规错误
S1001 | 内存分配失败
S1002 | 列编号无效
S1003 | 程序类型超出范围
S1004 | SQL 数据类型超出范围
S1008 | 已取消操作
S1009 | 参数值无效
S1010 | 函数序列错误
S1011 | 操作在此时无效
S1012 | 所指定的事务操作代码无效
S1015 | 无可用的游标名称
S1090 | 字符串或缓冲区长度无效
S1091 | 描述符类型超出范围
S1092 | 选项类型超出范围
S1093 | 参数编号无效
S1094 | 小数位数值无效
S1095 | 函数类型超出范围
S1096 | 信息类型超出范围
S1097 | 列类型超出范围
S1098 | 作用域类型超出范围
S1099 | 可为空类型超出范围
S1100 | 唯一性选项类型超出范围
S1101 | 准确性选项类型超出范围
S1103 | 方向选项超出范围
S1104 | 精度值无效
S1105 | 参数类型无效
S1106 | 提取类型超出范围
S1107 | 行值超出范围
S1108 | 并发选项超出范围
S1109 | 游标位置无效
S1110 | 驱动程序完成无效
S1111 | 书签值无效
S1C00 | 驱动程序无法执行
S1DE0 | 执行值挂起时无数据
S1T00 | 超时失效

* 在 SQL Server 企业管理器中，当设法保存选定表或保存数据库关系图时，如果 Microsoft® SQL Server™ 用尽资源，则可能接收到"游标状态无效"的错误信息。返回此错误的原因是，数据库或事务日志的空间不足，无法完成保存进程。若要修正此问题，请检查数据库或事务日志是否已满。如果已满，请增加数据库的大小以容纳更改。请检查其它的系统资源或与系统管理员联系。

除 ODBC 程序员参考文档中的标准 ODBC 错误信息外，SQL Server ODBC 驱动程序可以为某些 SQLSTATE 值返回错误信息，如下表所示。

SQLSTATE | SQL SERVER 驱动程序错误 | 描述
01000 | 已将 %ld 行发送到 SQL Server。共有：%ld 行。 | 使用 BCP API，已将一批行发送到 SQL Server。
01000 | 成功进行了大容量复制，已总共将 %ld 行复制到主文件中。共收到：%ld 行。 | 使用 BCP API，已将一批行写入到主文件中。
01000 | 已拒绝对在 DSN 中配置的数据库进行访问。使用默认值。 | 数据库不存在，或用户不具有对该数据库的访问权限。使用了为登录 ID 配置的默认数据库。
01000 | 在设法访问日志文件时出错，禁用日志记录。 | 无法使用驱动程序统计或长时间查询的日志文件。已禁用驱动程序统计或长时间查询的日志记录。
01000 | 连接到备份服务器。 | SQL Server 主服务器不可用，因此连接到后备服务器。
01000 | 不支持在 DSN 中配置的语言。使用默认值。 | 语言名称无效，或未在服务器上安装该语言。使用了为登录 ID 配置的默认语言。
01000 | Null 位数据强制为零。 | 正将包含 NULL 的位字段装载到不支持 NULL 位数据的服务器。该字段设置为零。
01000 | 用 'EXEC' 执行了过程。未返回任何输出参数。 | 无法作为 RPC 执行过程，并且指定了输出参数。因为已用 EXEC 执行了过程，将不存储任何输出参数。
01000 | 禁用 SQL 调试。 | 无法启用 SQL 调试，原因是没有为 SQL 调试对 SQL Server 进行配置。
01000 | 安装在 %s 服务器上的 ODBC 目录存储过程的版本为 %s；要确保正确操作，需要 %02d.%02d.%4.4d 版或更高版本。请与系统管理员联系。 | 通过执行 \Msqql\Install\Instcat.sql 安装 ODBC 目录存储过程。
01000 | 将长度为零的数据强制为长度为 1。 | 正在装载零长度二进制或字符字段，但不支持零长度数据。字段强制为 1 字节空格或二进制零。
01S02 | 游标并发已更改。 | 因为请求或查询的类型，应用程序请求了无法遵守的并发。代之以使用另一个并发。
01S02 | 游标类型已更改。 | 因为请求或查询的类型，应用程序请求了无法遵守的游标类型。代之以使用另一种游标类型。
01S02 | 服务器未遵守数据包大小更改，使用了服务器大小。 | 应用程序请求了无法为 SQL Server 所支持的非默认数据包大小。代之以使用服务器默认大小。
01S02 | 数据包大小已更改。 | 应用程序请求了非默认数据包大小，超出了允许的大小限制。根据所请求的大小是过大，还是过小，代之以使用最小的或最大的数据包大小。
01S02 | 登录超时已更改。 | 应用程序请求了一个过长的登录超时。代之以使用最大的登录超时。
07006 | 不允许使用 bcp_moretext 进行转换。 | 使用 bcp_moretext 的应用程序与列类型必须具有相同的字段类型。
08004 | 服务器拒绝连接；已拒绝对所选数据库的访问。 | 数据库不存在，或用户不具有对该数据库的访问权限。
08004 | 服务器拒绝连接；不支持所指定的语言。 | 语言名无效，或未在 SQL Server 上安装该语言。
HY024 | 数据库无效或无法访问。 | 数据库不存在，或用户不具有对该数据库的访问权限。
IM006 | 服务器不支持数据包大小更改，使用默认值。 | 应用程序请求了 SQL Server 不支持的非默认数据包大小。使用了客户默认大小。
HY000 | 所有绑定列都是只读的。 | 必须是可升级的列，以使用 SQLSetPos 或 SQLBulkOperations 更改或插入行。
HY000 | 已检测到一个旧 netlib (%s)。请删除并重新启动应用程序。 | 正在装载的 netlib 已过期。驱动程序请求一个较新的 netlib。 问题可能出在应用程序当前目录中的 netlib，正在装载的是这个 netlib，而不是系统目录中的那个。也可能是该 netlib 安装不当或已损坏。如果错误文本中所指定的 netlib 存在于 Windows 系统目录外的其它地方，请将其删除。如果 netlib 只存在于系统目录中，在客户端安装客户实用工具，然后重新启动应用程序。
HY000 | 尝试将 NULL 值大容量复制到不接受 NULL 值的 Server 列中。 | 字段包含 NULL 值，但列不允许 NULL 值。
HY000 | 尝试将过大的列大容量复制到 SQL Server。 | 为列提供的长度大于表中的列定义。
HY000 | 尝试读取 BCP 格式文件的未知版本。 | bcp 格式文件中的标题行采用了不可识别的版本。
HY000 | 错误的大容量复制方向。必须是 IN 或者 OUT。 | bcp_init 调用没有为 eDirection 参数指定有效的方向。
HY000 | 错误的终止符。 | bcp_bind 中提供的终止符字符串无效。
HY000 | Bcp 主文件必须至少包含一列。 | 未选定任何要装载的列。
HY000 | 无法生成 SSPI 上下文。 | 驱动程序无法获得集成安全性所要求的 SSPI 上下文。本机错误将包含该 Win32 错误代码。
HY000 | 无法初始化 SSPI 包。 | 驱动程序无法获得集成安全性所要求的 SSPI 上下文。本机错误将包含该 Win32 错误代码。
HY000 | 通讯模块无效。未正确安装驱动程序。 | 网络库 .dll 已损坏。在客户端安装客户实用工具，然后重新启动应用程序。
HY000 | 连接忙，结果针对另一个 hstmt。 | SQL Server ODBC 驱动程序只允许一个活动的 hstmt。有关更多信息，请参见使用默认结果集。
HY000 | 未对 BCP 启用连接。 | 使用 BCP API 的应用程序必须在连接之前设置 SQLSetConnectAttr 或 SQL_SS_COPT_BCP 特性。
HY000 | 关闭连接时失败。 | 网络库中的 ConnectionClose 函数失败。此问题通常是由网络或 SQL Server 问题引起的。
HY000 | 对于 BCP，必须对所有变长数据指定长度前缀或终止符。 | 用 SQL_VARYLEN_DATA 调用了 bcp_bind，但未指定前缀长度或终止符。
HY000 | 只有在复制到服务器中时，才能跳过主文件列。 | bcp out 格式文件指定应跳过列。不允许进行这种指定。创建一个视图，其中只包含所需列和该视图的 bcp out，或使用 -Q 标志提供一个只选择所需列的 SELECT 语句。
HY000 | 在 BCP 格式文件中找到不正确的主列号。 | 格式文件所包含的列号大于表中的列数。
HY000 | 在读取 bcp 数据文件时发生 I/O 错误。 |
HY000 | 在读取 BCP 格式文件时发生 I/O 错误。 |
HY000 | 写入 bcp 数据文件时发生 I/O 错误。 |
HY000 | 在写入 bcp 错误文件时发生 I/O 错误。 |
HY000 | 无效选项。 | 到 bcp_control 的 eOption 参数无效。
HY000 | 默认参数后面不允许有非默认参数。 | 在任何已用默认值进行指定的参数后面，存储过程的参数不能有非默认值。
HY000 | 没有足够的列绑定。 | 对于 bcp out，未绑定表的所有列。创建一个视图，其中只包含所需列和该视图的 bcp out，或使用 -Q 标志提供一个只选择所需列的 SELECT 语句。
HY000 | ODBC BCP/驱动程序版本不匹配。 | Sqlsrv32.dll 和 Odbcbcp.dll .dll 不具有相同的版本。在客户端安装客户实用工具，然后重新启动应用程序。
HY000 | TDS 流中发生协议错误。 | 服务器的 TDS 流无效。此问题一般是由 SQL Server 问题引起的。请查看SQL Server 错误日志。
HY000 | 表中包含的行数小于第一个行计数。 | 提供了起始行号，但服务器上的表未包含那些行数。未向主文件复制任何行。
HY000 | 表中包含的行数小于最后一个行计数。 | 提供了结束行号，但服务器上的表未包含那些行数。
HY000 | 表没有 text/image 列。 | 调用了 bcp_moretext，但表不包含任何 text 或 image 列。
HY000 | TDS 缓冲区长度过大。 | 服务器的 TDS 流无效。此问题一般是由 SQL Server 问题引起的。请查看SQL Server 错误日志。
HY000 | 文本列数据不完整。 | bcp_moretext 所提供的长度的总和与 bcp_bind 或 bcp_collen 中所提供的长度不匹配。
HY000 | BCP 主文件包含的行数小于第一个行计数。 | 提供了起始行号，但主文件未包含那些行数。未装载任何行。
HY000 | 行长度超过了 SQL Server 所允许的最大长度。 | 行的数据长度的总和大于最大行大小。
HY000 | 无法在服务器上找到完成此操作所需的存储过程（用 SQL Server 提供）。请与系统管理员联系。 | 通过执行 \Msqql\Install\Instcat.sql 安装 ODBC 目录存储过程。
HY000 | 无法装载通讯模块。未正确安装驱动程序。 | 此客户端上不存在为该连接指定的网络库 .dll。在客户端安装客户实用工具，然后重新启动应用程序。
HY000 | 无法打开 BCP 主数据文件。 | 在 bcp_init 调用中指定的文件名不存在，或已由另一个应用程序打开。
HY000 | 无法打开 BCP 错误文件。 | 在 bcp_init 调用中指定的错误文件名不存在，或已由另一个应用程序打开。
HY000 | 无法读取驱动程序版本。 | 驱动程序无法在其 .DLL 中读取版本块。在客户端安装客户实用工具，然后重新启动应用程序。
HY000 | 在 BCP 数据文件中遇到意外 EOF。 | 在执行 bcp in 操作过程中，在处理最后一行的过程中，检测到了文件结尾。通常，这是由于原始表和正在装载的表具有不同的列数、类型、为空性或大小而造成的。
HY000 | Unicode 转换失败。 | 在和 Unicode 字符串之间进行转换时出错。本机错误将包含该 Win32 错误代码。
HY000 | Unicode 转换失败。必须在客户系统上安装 SQL server 代码页。 | 服务器代码页必须在客户端存在，方能执行正确的操作。清除 DSN 的"自动转换"复选框，或在客户端安装服务器的代码页。运行 EXEC sp_server_info 18 可以确定服务器代码页。
HY000 | 从 SQL Server 接收到未知的令牌环。 | 服务器的 TDS 流无效。此错误一般是由服务器上的问题引起的。请查看SQL Server 错误日志。
HY000 | 警告:部分插入/更新。插入或更新 text 或 image 列不成功。 | 在插入或更新 text、image 或 ntext 列的过程中发生了错误。该列将包含不正确的数据。如果可能，请回滚事务。


查找补充错误信息

随着时间的推移，有关 Microsoft® SQL Server™ 错误信息的更多信息，将在本节中以成文或不成文的形式提供。


添加用户定义的错误信息

使用系统存储过程 sp_addmessage 可将用户定义的错误信息添加到 sysmessages 表。使用 sp_addmessage 至少可以指定消息号、严重级别和消息文本。

与用 RAISERROR 指定用户定义错误信息类似，请使用大于 50000 的错误信息号和 0 到 18 的严重级别。只有系统管理员可以发出严重级别从 19 到 25 的 RAISERROR。

请参见

sp_addmessage