如何以编程方式确定哪些 SQL 表具有标识列
我想在 SQL Server 2005 中创建一个列列表,其中包含标识列及其在 T-SQL 中的对应表。
结果类似于:
TableName、ColumnName
I want to create a list of columns in SQL Server 2005 that have identity columns and their corresponding table in T-SQL.
Results would be something like:
TableName, ColumnName
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(14)
对于 SQL Server 来说,执行此操作的另一种潜在方法是使用
INFORMATION_SCHEMA 视图:
Another potential way to do this for SQL Server, which has less reliance on the system tables (which are subject to change, version to version) is to use the
INFORMATION_SCHEMA views:
由于某种原因,sql server 将一些标识列保存在不同的表中,对我有用的代码如下:
By some reason sql server save some identity columns in different tables, the code that work for me, is the following:
用这个 :
Use this :
这适用于 SQL Server 2005、2008 和 2012。
我发现 sys.identity_columns 不包含所有带有标识列的表。
查看文档页面,还可以利用状态栏。 您还可以添加四部分标识符,它将在不同的服务器上工作。
来源:
https://msdn.microsoft.com/en-us/library/ms186816.aspx
This worked for SQL Server 2005, 2008, and 2012.
I found that the sys.identity_columns did not contain all my tables with identity columns.
Looking at the documentation page the status column can also be utilized. Also you can add the four part identifier and it will work across different servers.
Source:
https://msdn.microsoft.com/en-us/library/ms186816.aspx
另一种方式(适用于 2000 / 2005/2012/2014):
注意:
table_name_here
应为schema.table
,除非架构为dbo
。Another way (for 2000 / 2005/2012/2014):
NOTE:
table_name_here
should beschema.table
, unless the schema isdbo
.sys.columns.is_identity = 1
例如,
sys.columns.is_identity = 1
e.g.,
在 SQL 2005 中:
In SQL 2005:
基于 Guillermo 答案的没有 Identity 列的表列表:
List of tables without Identity column based on Guillermo answer:
这个查询似乎可以解决问题:
This query seems to do the trick:
以下查询对我有用:
The following query work for me:
这是 MSSQL 2000 的工作版本。我修改了此处找到的 2005 代码:http://sqlfool.com/2011/01/identity-columns-are-you-nearing-the-limits/
here's a working version for MSSQL 2000. I've modified the 2005 code found here: http://sqlfool.com/2011/01/identity-columns-are-you-nearing-the-limits/
我认为这适用于 SQL 2000:
I think this works for SQL 2000:
这对我使用 Sql Server 2008 有用:
This worked for me using Sql Server 2008:
获取带有 Identity 的所有列。 MSSQL 2017+ 的现代版本。 锁定到特定数据库:
Get all columns with Identity. Modern version for MSSQL 2017+. Locks down to specific database: