gpt4 book ai didi

sql - SQL Server 2012 中应该如何限定表名?

转载 作者:搜寻专家 更新时间:2023-10-30 20:18:02 25 4
gpt4 key购买 nike

假设我有一个名为 MyDB 的数据库,其中包含一个名为 MyTable 的表。我可以将其引用为

MyDb.dbo.MyTable

但是,如果我在存储过程中执行此操作,然后使用不同的名称部署数据库,则存储过程将不再有效。

如果我将其限定为

dbo.MyTable

然后它就可以工作了,我可以随意命名数据库。但是,如果我不再知道我的数据库在部署时将被调用什么,我就无法引用另一个数据库中的表。即我无法指定我真正想要的表在另一个数据库中(在同一台服务器上)即

MyOtherDb.dbo.MyTable

这个:http://www.sql-server-performance.com/2001/sql-best-practices/

Prefix the table names with the owner’s name, as this improves readability and avoids any unnecessary confusion. Microsoft SQL Server Books Online even states that qualifying table names with owner names helps in execution plan reuse, further boosting performance.

我是 SQL Server 的新手,不完全确定所有者是什么。此外,许多其他资源规定应使用“完全限定名称”,但没有准确说明“完全限定名称”的含义。

抱歉,如果这是一个愚蠢的问题,但这里的最佳做法是什么?我宁愿现在就知道这一点,也不愿在三个月后自己解决并进行大量重构。谢谢!

最佳答案

对同一数据库中的对象使用两部分名称。

这意味着您可以使用不同的名称创建数据库的副本,而不必以三部分命名格式遍历和更改数据库名称。

对于不同数据库中的对象,您需要使用三部分名称(如果是链接服务器,则需要四部分)。

通常您可以使用同义词来集中这些外部引用。这使得将它们重定向到开发中的不同位置变得更加容易。尽管同义词不完全具有直接引用对象的所有功能(例如,TRUNCATE TABLE dbo.YourSynonymCREATE INDEX 引用同义词不起作用)。

关于sql - SQL Server 2012 中应该如何限定表名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26101937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com