Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL数据库id值是否重用?_Sql_Sql Server_Tsql - Fatal编程技术网

SQL数据库id值是否重用?

SQL数据库id值是否重用?,sql,sql-server,tsql,Sql,Sql Server,Tsql,当我运行下面的查询时,我会得到每个数据库的database_id字段。我的印象是价值正在被重新利用。例如,我删除数据库,然后恢复新数据库。某些新恢复的数据库的数据库id值可能是旧的。 可能吗?这能改变吗 我问的原因如下。我正在SQL server中的每个数据库上运行查询。我想排除一些数据库,我使用database_id字段来标识我希望在查询中跳过的数据库。但是,如果重复使用数据库id,我必须定期更新查询。 多谢各位 SELECT * FROM sys.databases 数据库id可能会更改,

当我运行下面的查询时,我会得到每个数据库的database_id字段。我的印象是价值正在被重新利用。例如,我删除数据库,然后恢复新数据库。某些新恢复的数据库的数据库id值可能是旧的。 可能吗?这能改变吗

我问的原因如下。我正在SQL server中的每个数据库上运行查询。我想排除一些数据库,我使用database_id字段来标识我希望在查询中跳过的数据库。但是,如果重复使用数据库id,我必须定期更新查询。 多谢各位

SELECT *
FROM sys.databases

数据库id可能会更改,因此在进行任何类型的比较之前,应使用
DB\u id
函数获取正确的值

此函数返回指定数据库的数据库标识(ID)号

DB_ID ( [ 'database_name' ] )  
例如:

SELECT *
FROM sys.master_files
WHERE database_id = DB_ID('my_database_name');

-- instead of
SELECT *
FROM sys.master_files
WHERE database_id = 18;  -- database_id may not exists or point to different db

以下是我将要做的,并解决我的情况


使用建议的解决方案,我将运行一个子查询并创建目标表所在的所有数据库的列表。然后,我在该列表中所有可用的数据库上运行查询

它不是持久的,因此可以更改。
数据库\u id
值可以在删除/创建/恢复数据库时重用。这是不可配置的行为。考虑一下为什么你会关心这个问题,所以有人可以提出一个解决方案。“DanGuzman,谢谢你,我编辑了这个问题并提出了这个方案。听起来我应该用数据库名称来代替。@DeepDiver,我同意最好用这个名称。@DeepDiver,正如我前面所说的,不要使用
数据库id
,想象你有一个db,然后删除它,然后创建一个db,再创建一个db。如果您使用
database\u id
谢谢,我从sys.databases中得到了类似于
SELECT*的东西,其中database\u id不在(6,7,8,11,19)
中,但显然无法做到这一点。