我在database1
中有一些程序用于使用INSERT
语句填充某些表。
我要填写的表位于database2
。如何使用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'.
答案 0 :(得分:3)
您可以使用four-part name:
引用SQL Server表server.database.schema.table
对于其他数据库,您只需要最后三部分:
insert otherdb.dbo.yourtable
(col1, col2, ...)
values ('val1', 'val2', ...)
您可以在存储过程中使用它来插入到不同数据库的表中。
答案 1 :(得分:0)
是的!您可以将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