如何创建数据类型并使其在所有数据库中可用?

Mar*_*lli 7 sql-server stored-procedures datatypes sql-server-2016 table-variable

如果我在 master 数据库中创建了一个存储过程,并且我想从我的任何数据库中执行它,我只需点击以下链接:

使过程在所有数据库中可用

这给了我这个代码示例:

在此处输入图片说明

只需按照上面的示例,我就可以从任何数据库调用我的过程。

如果我在 master 中创建一个表数据类型,我如何在我的任何数据库中使用它?

use master

        IF NOT EXISTS (select * from sys.types where name = 'theReplicatedTables') 
                CREATE TYPE theReplicatedTables AS TABLE 
                (  OBJ_ID INT NOT NULL,
                  PRIMARY KEY CLUSTERED (OBJ_ID)
                );

use APIA_Repl_Sub
go
declare @the_tables [dbo].[theReplicatedTables]
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Dan*_*aga 6

使用表类型无法做到这一点。您将需要在所有数据库中复制它。但是,如果您希望在创建新数据库时使用此表类型,则只需将其添加到模型数据库中即可。使用表值参数有一些限制。您甚至不能跨数据库使用表值参数。检查这里的一些细节。


Aar*_*and 5

类型不能跨越数据库阈值或被标记为系统。因此,您需要在要使用它的每个数据库中创建该类型。(我不喜欢依赖诸如 master 中的数据或类型之类的东西,因为当您移动到不同的系统时,它们会消失。)

对于现有数据库,您可以在循环中创建类型。对于新数据库(通过CREATE DATABASE),在model.