但在我保存程序并再次检查后,文件更改为[dbo].[verifyData]...此外,当我尝试执行该程序时,我的智能感知无法选择该程序
SQL Server DATABASE 包含多个对象,例如表、视图、存储过程、函数、索引、触发器。这些对象归一个名为 SCHEMA 的逻辑实体所有。
除非另有说明,否则对特定对象的所有 Transact-SQL 引用都可以是以下格式的四部分名称:[server_name].[database_name].[schema_name].object_name。这种格式称为Four Parts Name,您可以将其视为对象的完整逻辑路径
四部分名称相当于文件的完整路径,例如:C:\Program Files\Microsoft SQL Server\MSSQL15.SQL2019\MSSQL\DATA\AdventureWorks2019.mdf
要在多服务器环境中唯一标识一个对象,您需要所有四个部分:服务器名称 (1)、数据库名称 (2)、架构名称 (3) 和对象名称 (4)。
但是当我们在一个特定的数据库中工作时,我们通常使用一个由两部分组成的名称(如果需要,也可以是两部分的“路径”),其中包括 SHEMA 和 OBHECT 的名称。例如:CREATE PROCEDURE MySchemaName.MySP,或SELECT ColA FROM MySchemaName.MyTableName
由两部分组成的名称在某种程度上等同于文件的相对路径。例如如果我们在文件夹中:C:\Program Files\Microsoft SQL Server\MSSQL15.SQL2019\MSSQL\ 那么 as 只能使用文件的相对路径DATA\AdventureWorks2019.mdf
不幸的是,大多数人都很懒惰(或不太了解),因此他们使用对象的名称而不使用 SCHEMA 的名称,只是您在创建存储过程时所做的。 这不是格式正确的代码!
当您创建对象而不显式使用 SCHEMA 名称(如您所做的那样)时,SQL Server 使用默认架构作为该对象的所有者,即 [dbo]
但在我保存程序并再次检查后,文件更改为[dbo].[verifyData]
非常重要! (1) 我们不保存对象而是创建对象。 (2) 这不是文件,而是存储过程。
注意!如果你想理解,你必须开始使用正确的短语。
答案很简单:
服务器使用正确的格式,即由两部分组成的名称[dbo].[verifyData] - 拥有存储过程的默认模式的名称 + 存储过程的名称
当我尝试执行该程序时,我的智能感知无法选择该程序
发生这种情况是因为您没有以 SCHEMA 名称开始。开始输入 SCHEMA 的名称,智能感知应该找到 SCHEMA 名称。接下来,您添加点. 并开始输入存储过程名称,智能感知应该在 SCHEMA 下找到该存储过程
总结
(1) 您应该始终使用至少由两部分组成的名称(即使我们大多数人不这样做)
(2) 您可以并且应该创建新的 SCHEMA 并将数据库中的对象分组到一个逻辑组中。要创建新的 SCHEMA,您可以使用:CREATE SCHEMA [Customer]。 For more information and option when you CREATE a SCHEMA, check this link.