0

我目前正在对应用程序进行一些维护,并且遇到了一个关于 tsql 中限定名称的大问题。我想知道是否有人可以为我解决我的困惑。

据我了解,您想用来USE [DatabaseName]声明您正在使用的数据库。我注意到如果您“重命名”数据库,它会自动更新代码中的这些引用。

但是,最初编写此代码的开发人员使用USE [DatabaseName]. 然后在后来的声明中,他写道:SELECT * FROM [DatabaseName].[dbo].[Table]。好吧,如果我更改数据库的名称,这显然会中断。从我读过的内容来看,您只想将名称限定为所有者,例如:[dbo].[TableName]所以它知道在哪里看可以提高性能。

他在每条语句中都包含数据库名称是否有原因?

4

1 回答 1

1

从我读过的内容来看,您只想将名称限定为所有者,例如:[dbo].[TableName],以便它知道在哪里查看可以提高性能。

不是我知道,而是看起来有人很懒惰。
我总是使用三个名称格式(除非访问链接服务器实例,否则它是四个)。

好处是,将使用来自正确数据库和模式的正确表,而不用担心错误的USE [appropriate database]语句。只要对象存在,且权限根据需要有效,就可以在其他数据库中重新创建存储过程、函数、视图等,无需USE [appropriate database]每次都对语句进行寻址。

但我正在处理分布在同一实例上的众多数据库中的数据。我不一定会那样设计它,但我使用三(或四)部分限定名称格式不会改变。

于 2010-09-22T23:26:07.697 回答