EXEC掌握了什么..做什么?

时间:2011-03-07 05:13:25

标签: sql sql-server tsql

我见过这样的话:

EXEC master.dbo.xp_cmdshell

master指的是什么?

更新
为什么有时会有两点:

 master..

一般情况下我们会使用master.dbo.我是否正确,为什么有些人会写master..

4 个答案:

答案 0 :(得分:7)

master是默认SQL Server system databases之一。你可以告诉你,因为你发布了什么:

EXEC master.dbo.xp_cmdshell

...使用三个名称表示法。 “master”在数据库位置,“dbo”是模式,“xp_cmdshell”是这种情况下的函数/存储过程。您可以在不同的上下文中使用此表示法来引用表和视图。

此:

EXEC master..xp_cmdshell

...只是省略了架构,但如果在数据库中使用了多个架构,则不是一个好主意。

答案 1 :(得分:3)

它指的是在主表中创建(默认情况下)的存储过程。

名称master指的是包含服务器实例的不同模式的数据库。

答案 2 :(得分:3)

在Transact SQL中,任何对象的完全限定路径为:

server_name.db_name.owner.object parm1, ...

  • 点分开四个组件
  • 前三个组件有默认值:
    • 当前服务器
    • 当前数据库
    • dbo(数据库所有者)(应该是共享表的所有者)

master是定义服务器的系统数据库。

对于MS,由于系统存储过程仍位于master,以下内容完全是多余的:

EXEC master.dbo.stored_proc_name parm1, ...
并可以替换为:
EXEC stored_proc_name parm1, ...
由于EXEC是默认命令:
stored_proc_name parm1, ...

master..master.dbo.之间没有区别。在处理系统存储过程时,它们都是不必要的。

答案 3 :(得分:0)

master指的是master数据库(它是一个System数据库)。

在SSMS中:数据库 - >系统数据库 - >主