标识列的数据类型必须是 int、bigint、smallint、tinyint、decimal 或小数位数为 0 的数字,并且该列不能为空
The identity column must be of data type int, bigint, smallint, tinyint, decimal, or numeric with a scale of 0, and the column must not be nullable
使用 Visual Studio 2012 (VS2012) 和 SQL 服务器数据工具 (SSDT) 我在将数据库项目附加到 StarTeam 2009 R2 后收到此错误(我之前在没有源代码控制)。用于 VS2012 的 StarTeam 2009 R2 集成客户端已安装多个星期,但自从将解决方案放在源代码管理服务器上后,Visual Studio 的性能已严重降低(等待 20-40 秒弹出上下文菜单)现在这个错误对我来说毫无意义。
SQL71518: The identity column '[Domain\Login].[temp#].[Id]' must be of data type int,
bigint, smallint, tinyint, decimal, or numeric with a scale of 0, and the column must
not be nullable.
据我所知,此代码在语法上没有任何错误 - 尽管我可能同意许多其他问题...
CREATE TABLE [Domain\Login].[temp#]
(
[Code] VARCHAR (20) NOT NULL,
[Description] VARCHAR (255) NOT NULL,
[Id] INT IDENTITY(1, 1) NOT NULL
)
知道为什么 [Id]
列被标记为错误 SQL71518 吗?该列的数据类型为int
且不可为空,符合错误消息中提到的要求。
此代码继承自停止支持其产品的外部供应商。由于该产品被认为对我的公司很重要,他们安排获取源代码以便我们自己支持它。我对这个特定项目比较陌生,整个团队都知道它有严重的缺陷;但我们还没有收到升级代码和修复所有设计问题所需的预算 - 只是执行一些 "minor" 修改,这应该与上述错误无关。因此我会忽略这个错误,但它会干扰 VS2012 数据库架构比较实用程序。
编辑 1
VS 2012 的 SSDT 已经在 11.1.50730.0
SQL Server Data Tools 11.1.50730.0
Microsoft SQL Server Data Tools
Visual Studio 2012 附带的 SSDT 版本非常过时,也许这就是它适用于其他人的原因?
获取较新版本的 SSDT(2013 或 2015),它应该可以工作 - 您无需支付许可证费用,您可以获得 visual studio Express 或社区附带的许可证。
编辑
请尝试将 SSDT 更新到 Visual Studio 2012 的最新版本。可在此处下载:https://msdn.microsoft.com/library/mt204009.aspx
我已经尝试使用最新版本的 SSDT 重现问题,但我没有遇到这种情况。如果您在 Visual Studio 2012 使用最新版本的 SSDT 时仍然遇到此问题,我建议使用类别 "Developer Tools (SSDT, BIDS, etc.)".
在 https://connect.microsoft.com/SQLServer/feedback/CreateFeedback.aspx 提交连接问题
table 有一条记录,因此我通过 SQL Server Management Studio (SSMS) 修改了 table 设计,使标识列成为列表中的第一列。使用 SSMS,table 的数据在修改期间得以保留。我不确定 Visual Studio 是否会保留 table - 特别是因为模式比较实用程序由于错误而无法使用。
CREATE TABLE [Domain\Login].[temp#] (
[commodity_id] INT IDENTITY (1, 1) NOT NULL,
[code] VARCHAR (20) NOT NULL,
[name] VARCHAR (255) NOT NULL
);
无论 Visual Studio 2012 和 SSDT 发生了什么,这似乎已经纠正了错误——至少目前是这样。
使用 Visual Studio 2012 (VS2012) 和 SQL 服务器数据工具 (SSDT) 我在将数据库项目附加到 StarTeam 2009 R2 后收到此错误(我之前在没有源代码控制)。用于 VS2012 的 StarTeam 2009 R2 集成客户端已安装多个星期,但自从将解决方案放在源代码管理服务器上后,Visual Studio 的性能已严重降低(等待 20-40 秒弹出上下文菜单)现在这个错误对我来说毫无意义。
SQL71518: The identity column '[Domain\Login].[temp#].[Id]' must be of data type int,
bigint, smallint, tinyint, decimal, or numeric with a scale of 0, and the column must
not be nullable.
据我所知,此代码在语法上没有任何错误 - 尽管我可能同意许多其他问题...
CREATE TABLE [Domain\Login].[temp#]
(
[Code] VARCHAR (20) NOT NULL,
[Description] VARCHAR (255) NOT NULL,
[Id] INT IDENTITY(1, 1) NOT NULL
)
知道为什么 [Id]
列被标记为错误 SQL71518 吗?该列的数据类型为int
且不可为空,符合错误消息中提到的要求。
此代码继承自停止支持其产品的外部供应商。由于该产品被认为对我的公司很重要,他们安排获取源代码以便我们自己支持它。我对这个特定项目比较陌生,整个团队都知道它有严重的缺陷;但我们还没有收到升级代码和修复所有设计问题所需的预算 - 只是执行一些 "minor" 修改,这应该与上述错误无关。因此我会忽略这个错误,但它会干扰 VS2012 数据库架构比较实用程序。
编辑 1
VS 2012 的 SSDT 已经在 11.1.50730.0
SQL Server Data Tools 11.1.50730.0
Microsoft SQL Server Data Tools
Visual Studio 2012 附带的 SSDT 版本非常过时,也许这就是它适用于其他人的原因?
获取较新版本的 SSDT(2013 或 2015),它应该可以工作 - 您无需支付许可证费用,您可以获得 visual studio Express 或社区附带的许可证。
编辑
请尝试将 SSDT 更新到 Visual Studio 2012 的最新版本。可在此处下载:https://msdn.microsoft.com/library/mt204009.aspx
我已经尝试使用最新版本的 SSDT 重现问题,但我没有遇到这种情况。如果您在 Visual Studio 2012 使用最新版本的 SSDT 时仍然遇到此问题,我建议使用类别 "Developer Tools (SSDT, BIDS, etc.)".
在 https://connect.microsoft.com/SQLServer/feedback/CreateFeedback.aspx 提交连接问题table 有一条记录,因此我通过 SQL Server Management Studio (SSMS) 修改了 table 设计,使标识列成为列表中的第一列。使用 SSMS,table 的数据在修改期间得以保留。我不确定 Visual Studio 是否会保留 table - 特别是因为模式比较实用程序由于错误而无法使用。
CREATE TABLE [Domain\Login].[temp#] (
[commodity_id] INT IDENTITY (1, 1) NOT NULL,
[code] VARCHAR (20) NOT NULL,
[name] VARCHAR (255) NOT NULL
);
无论 Visual Studio 2012 和 SSDT 发生了什么,这似乎已经纠正了错误——至少目前是这样。