Visual Studio를 사용하지 않고 관리 저장 프로 시저를 어떻게 배포합니까?

StackOverflow https://stackoverflow.com/questions/124295

  •  02-07-2019
  •  | 
  •  

문제

내가 읽은 모든 것에 따르면 관리 저장 절차를 만들 때 Visual Studio를 마우스 오른쪽 버튼으로 클릭하고 배포를 선택합니다. 그것은 잘 작동하지만 Visual Studio 외부에 여러 다른 위치에 배치하려면 어떻게해야합니까? SQL로 내장 된 프로젝트 DLL로 어셈블리를 만들려고 시도했으며 어셈블리를 추가했지만 어셈블리에서 절차를 생성하지 않았습니다. Visual Studio를 사용하지 않고 SQL에서 직접 수행하는 방법을 알아 낸 사람이 있습니까?

도움이 되었습니까?

해결책

어셈블리 DLL 파일을 다양한 서버의 로컬 드라이브에 복사하십시오. 그런 다음 데이터베이스에 어셈블리를 등록하십시오.

create assembly [YOUR_ASSEMBLY]
from '(PATH_TO_DLL)'

... 그런 다음 DLL에서 적절한 공개 메소드를 참조하는 기능을 만듭니다.

create proc [YOUR_FUNCTION]
as
external name [YOUR_ASSEMBLY].[NAME_SPACE].[YOUR_METHOD]

브래킷, 특히 name_space 주위에 [브래킷을 사용하십시오. 네임 스페이스에는 부품이 정사각형 브래킷으로 명시 적으로 구분되지 않는 한 SQL 식별자는 할 수 없지만 SQL 식별자는 할 수 없습니다. 이것은 처음 SQL CLR을 사용할 때 많은 두통의 원천이었습니다.

명확하게 말하면, [Your_assembly]는 SQL로 정의한 이름입니다. [name_space]는 메소드를 찾을 수있는 DLL 내부의 .NET 네임 스페이스입니다. 그리고 [Your_Method]는 단순히 해당 네임 스페이스 내의 메소드의 이름입니다.

다른 팁

위의 @kcrumley의 Anwser에 더 자세한/설명을 추가하려면 :

name_space]는 완전히 자격을 갖추고 있습니다 유형 이름 그리고 네임 스페이스뿐만 아니라
- 즉, 수업이 호출되는 경우 StoredProcedures 네임 스페이스에서 My.Name.Space, 당신은 사용해야합니다 [My.Name.Space.StoredProcedures] name_space] 부품의 경우.

관리 저장 프로 시저가 네임 스페이스가 정의되지 않은 클래스에있는 경우 베어 클래스 이름 만 사용합니다 (예 : [StoredProcedures]).

또한 인수/매개 변수로 절차를 추가하는 방법을 해결하려고 노력했습니다. 그래서 그녀는 다른 사람을위한 샘플을 사용합니다.

CREATE PROCEDURE [YOUR_FUNCTION] 
( 
    @parameter1 int,
    @parameter2 nvarchar
) 
WITH EXECUTE AS CALLER 
AS
EXTERNAL NAME [YOUR_ASSEMBLY].[StoredProcedures].[YOUR_FUNCTION] 
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top