2017-10-04 6 views
0

를 사용하지 않고 DB 절차를 만듭니다SQL 서버 : 내가 SQL 서버 2017의 벌금을 실행 <code>node-mssql</code>를 사용하여이 (간체) 쿼리를 실행하려면 [GO]

USE [Journal] 
[GO] 

CREATE PROCEDURE [dbo].[EventDelete] 
    @NotificationID INT 
AS 
    DELETE Notification 
    WHERE NotificationID = @NotificationID 
[GO] 

node-mssql[GO]를 사용하여 구문 오류를 선언하고 세미콜론이 필요 그러므로 나는이 시도 :

USE [Journal]; 

CREATE PROCEDURE [dbo].[EventDelete] 
    @NotificationID INT 
AS 
    DELETE Notification 
    WHERE NotificationID = @NotificationID; 

지금 우리가 얻을 오류 :

CREATE/ALTER PROCEDURE' must be the first statement in a query batch.

그럼 이렇게 해보자 :

CREATE PROCEDURE permission denied in database 'master'.

답변

0

그래서 정말 질문을 작성 :

CREATE PROCEDURE [Journal].[dbo].[EventDelete] 
    @NotificationID INT 
AS 
    DELETE Notification 
    WHERE NotificationID = @NotificationID; 

지금 우리가 마스터 오류에 연결하려고하는 DB 선언하지 않고

RequestError: 'CREATE/ALTER PROCEDURE' does not allow specifying the database name as a prefix to the object name.

당연히

를 얻을 수 생각을 똑바로 세우는 일을합니다.

저장 프로 시저가 [GO]가 의미하는 하나의 배치로 만들어야하는 이유는 다른 이유 때문입니다.

순차적 새로운 .batch(...) 실행으로 CREATE PROCEDUCE에있어서 .batch('USE [Journal]')하고 SQL을 사용 USE [Journal] 하나로 일괄 실행한다.

node-mssql 내에 다중 배치 실행을 허용하는 다른 방법이 없다면?

+1

대부분의 언어/환경에서 연결을 설정할 때 사용할 데이터베이스를 지정할 수 있습니다. 그것은 여러 가지 이유로 발전하는 좋은 습관입니다. 이것은 단지 하나의 습관입니다. – SMor

+0

좋은 점은 연결이 마스터로 설정되어 있습니다. 다른 DB에 절차를 추가하면 하나의 연결을 끊고 다시 연결해야합니까? – Tobin