【问题标题】:Error while comparing schemas of Database Project比较数据库项目的模式时出错
【发布时间】:2013-07-21 09:30:18
【问题描述】:

当我将 Visual Studio 2012 中的数据库项目架构与部署在网络服务器上的远程数据库进行比较时,它之前运行良好,但我无法解决它现在失败的原因。

当我将架构与部署在本地 PC 上的相同数据库进行比较时,它工作正常。因此,比较工具似乎有效,但远程服务器似乎存在问题。我可以通过任何方式解决问题。

我与远程服务器比较的错误如下:

Error    52    Target is unavailable: Value cannot be null.Parameter name: catalogStamp    SqlSchemaCompare2    0    0   

【问题讨论】:

  • 您找到解决方案了吗?我现在遇到了这个问题。
  • 还没有确切的解决方案,但是,问题会在一段时间后自动解决。我猜这是某种网络问题,其中数据库所在的数据库服务器和我正在比较架构的 Visual Studio 机器之间存在临时连接问题。

标签: sql-server visual-studio-2012 sql-server-data-tools sqlcompare


【解决方案1】:

我最近遇到了同样的问题,可能与原始发帖人的原因不同,但在我的情况下,这取决于我连接到的数据库的兼容性级别。

我连接的数据库是基于 Azure 的,微软最近将这些更新到默认兼容级别 140(相当于 SQL 2017)。以前的实例在较早的级别上运行,并且从一开始就直接运行,运行以下解决了我的问题:

ALTER DATABASE [Database_Name] SET COMPATIBILITY_LEVEL = 120

在对任何生产数据库进行兼容性级别更改之前,请务必检查任何副作用!

正如 Thibault 在下面评论的那样,如果您想检查现有的兼容性级别,您可以使用:

SELECT name, compatibility_level FROM sys.databases 

如果您想了解不同兼容性级别所涉及的版本,请查看此处https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-compatibility-level

【讨论】:

  • 很棒的发现!我花了 4 个小时试图让 Visual Studio 发布目标或服务器用户名错误。
  • 很好的答案。如果要检查数据库的 COMPATIBILITY_LEVEL,请使用 SELECT name, compatibility_level FROM sys.databases
【解决方案2】:

连接到 SQL 服务器时,您必须指定登录名和 密码。如果您使用没有密码的登录,则会出现此错误。

【讨论】:

    【解决方案3】:

    我的数据库是 Azure SQL DB,遇到了这个问题,我通过使用 Visual Studio 2017 解决了这个问题,而不是更改兼容性级别。

    【讨论】:

      【解决方案4】:

      如果您使用 SQL Server 登录,您是否启用了对 SQL DB 的远程访问(是否启用了 TCP/IP 服务),您的 SQl 服务器安全选项是否允许 Windows 身份验证和 SQL Server 登录?

      【讨论】:

      • 是的。您建议的所有可能性,但现在仍在工作:)
      猜你喜欢
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-26
      • 1970-01-01
      相关资源
      最近更新 更多