Sql server 使用另一个数据库的存储过程

Sql server 使用另一个数据库的存储过程,sql-server,tsql,stored-procedures,Sql Server,Tsql,Stored Procedures,我在database1中有一些过程,用于使用INSERT语句填充一些表格 我要填写的表格位于数据库2中。如何使用EXEC procedures编写查询以填充这些表 我不想在表的同一数据库中添加存储过程(database2) 这是db1中的存储过程之一 USE [database1] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[AddSubject] @SubjectCode nvarcha

我在
database1
中有一些过程,用于使用
INSERT
语句填充一些表格

我要填写的表格位于
数据库2
中。如何使用
EXEC procedures
编写查询以填充这些表

我不想在表的同一数据库中添加存储过程(
database2

这是db1中的存储过程之一

USE [database1]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[AddSubject]
@SubjectCode nvarchar(20),
@Credits int,
@Hours int

AS

INSERT INTO [database2].[dbo].[Subject]
       ([Code]
       ,[Credits]
       ,[Hours])
 VALUES
       (@SubjectCode,
       @Credits,
       @Hours)

 Return @@Identity 
这里是我执行存储过程的地方:

EXEC    @SubID = [database1].[dbo].[AddSubject] @SubjectCode='1234', @Credits=2, @Hours=50
这给了我一个错误:

Msg 208, Level 16, State 1, Procedure AddSubject, Line 14
Invalid object name 'database2.dbo.Subject'.

您可以使用以下命令引用SQL Server表:

对于不同的数据库,您只需要最后三个部分:

insert  otherdb.dbo.yourtable 
        (col1, col2, ...) 
values  ('val1', 'val2', ...)

您可以在存储过程中使用它插入到其他数据库的表中。

是!您可以将database2访问到database1,以便在一台服务器上同时访问两个数据库

如果您的scheema是dbo,则您可以按如下方式访问:-

Insert into database1..table_name (col1,col2)
select value1,value2
如果您的Scheema不是dbo,则:-

Insert into database1.Scheema_name.table_name (col1,col2)
select value1,value2

错误消息表明该表不存在。你确定在同一台服务器上有一个
database2
,在
dbo
架构中有一个
Subject
表吗?我这边也有相同的代码。在执行此操作之前,@subid已经声明了我所做的几件事。
Insert into database1.Scheema_name.table_name (col1,col2)
select value1,value2