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