2013-05-10 3 views
3

에 서버 및 데이터베이스를 통과SQL 서버 - 저장 프로 시저

내가

exec [dbo].[Logger] 
     @Server = @@servername, 
     @Database = db_name(db_id()), 
     @Task = 'Some task'; 
을 다음과 같이 몇 가지 로깅을 수행하는 저장 프로 시저에 서버 이름 및 데이터베이스 이름을 전달하기 위해 노력하고 있어요 (질문의 아마추어 자연 실례)

하지만 나는이 오류가 계속 -

메시지 102, 수준 15, 상태 1, 줄 10
근처의 구문이 잘못은 'DB_ID'.

나는 이것을 declare @dbname varchar(255) = db_name(db_id());을 맨 위에 사용한 다음 사용하고 있습니다. 그러나 그것은 불필요한 변수처럼 보입니다.

감사

+0

DB_NAME은 NVARCHAR (128)하지 VARCHAR (255) –

+3

을 반환 추가 변수가 ** ** 실제로 필요한 당신 ** 할 수 없습니다 ** 사용 기능 이후 저장 프로 시저 실행 호출에서 변수 및/또는 리터럴에 필요한 모든 값을 –

+2

duplicate 중 필요합니다. http://stackoverflow.com/questions/5967035/using-function-as-a-parameter-when-executing- a-stored-procedure –

답변

1

이 시도 :

declare @servername varchar(100) = @@servername 
declare @dbname = db_name(db_id()) 

exec [dbo].[Logger] 
     @Server = @servername, 
     @Database = @dbname, 
     @Task = 'Some task'