새 쿼리 스크립트를 SSMS 애드 인으로 연결하는 방법은 무엇입니까?

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

  •  06-07-2019
  •  | 
  •  

문제

SSMS 추가 기능을 만들려고합니다. 내가하고 싶은 일 중 하나는 새 쿼리 창을 만들고 프로그램적으로 서버 인스턴스에 연결하는 것입니다 (SQL 로그인의 맥락에서). 새 쿼리 스크립트 창을 잘 만들 수는 있지만 다른 것에 수동으로 연결하지 않고는 (객체 탐색기와 같은) 연결하는 방법을 찾을 수 없습니다.

다시 말해, Obect Explorer를 SQL 인스턴스에 수동으로 연결 한 다음 쿼리 창을 생성하는 애드 인 메소드를 실행하면이 코드를 사용하여 연결할 수 있습니다.

ServiceCache.ScriptFactory.CreateNewBlankScript(
     Editors.ScriptType.Sql,
     ServiceCache.ScriptFactory.CurrentlyActiveWndConnectionInfo.UIConnectionInfo,
     null);

그러나 연결을 위해 현재 활동적인 WndConnectionInfo.uiconnectionInfo에 의존하고 싶지 않습니다. SQL 로그인 사용자 이름과 비밀번호를 프로그래밍 방식으로 설정하고 싶습니다.

아무도 아이디어가 있습니까?

편집하다:

마지막 매개 변수를 system.data.sqlclient.sqlconnection의 인스턴스로 설정하여 쿼리 창을 연결했습니다. 그러나 연결은 프로그래밍 방식으로 설정하려는 대신 연결된 마지막 로그인의 컨텍스트를 사용합니다. 즉, 새 쿼리 버튼을 클릭하고 객체 탐색기가 연결되어 있지 않을 때 얻는 연결 대화 상자에서 선택한 사용자와 마찬가지로 연결하는 사용자입니다.

edit2 :

제작 서버에 대해 실행될 때 SQL 문과 실행 결과를 자동으로 보내기위한 추가 기능을 작성하고 쓰기를 바라고 있습니다. 내가 생각한 한 가지 생각은이 추가 기능을 통해 쓰기 권한을 제거하고 로그인을 할당하는 것이 었습니다. 또한 사용자가 사례를 입력해야합니다. 내가 방금 가지고 있던 또 다른 생각은 ServiceCache.scriptFactory.currelyActiveWndConnectionInfo.uiConnectionInfo에서 서버 이름을 검사하여 프로덕션 서버 목록과 비교하는 것입니다. 일치하고 케이스가 없으면 쿼리를 취소하십시오.

도움이 되었습니까?

해결책

연결 대화 상자 창에 연결할 방법이없는 것처럼 보이기 때문에이 작업을 수행 할 방법을 찾지 못했습니다.

무슨 일을하고 있니?

편집 : 올바르게 이해하면 실행중인 쿼리를 가로 채고 프로덕션 서버와 일치하면 텍스트와 결과를 DB로 보내십니까? 흠 ... 이것은 가능하지만 뒤에서 진정한 주요 고통이지만, 나는 이것을 위해 추가 기능을 사용하지 않을 것입니다. 또한 추가 기능을 비활성화하거나 제거 할 수 있습니다. 제작 서버에서 적절한 보안 설정으로이 작업을 수행하는 것이 좋습니다.

다른 팁

다른 사람이 쿼리 창을 만들고 연결하는 방법을 검색하는 경우를 대비하여 SSMS 2012의 짧은 예입니다.

UIConnectionInfo u =new UIConnectionInfo();

u.ServerName = "TestPC\\ServerInstance";

u.ServerType = new Guid("8c91a03d-f9b4-46c0-a305-b5dcc79ff907");

u.AuthenticationType = 0;//Use AuthenticationType = 1 for SQL Server Authentication

u.AdvancedOptions.Set("DATABASE", "AdventureWorks2012");

IScriptFactory scriptFactory = ServiceCache.ScriptFactory;

if(scriptFactory != null)
{
  scriptFactory.CreateNewBlankScript(ScriptType.Sql, u, null);
} 

이 코드 스 니펫은 Windows Auth를 사용하여 지정된 서버 및 데이터베이스에 연결된 새 쿼리 창이 열립니다.

나는 이것을 아직 시도하지 않았지만 당신이 그것을 쐈는지 몰랐습니다.

Microsoft.SqlServer.Management.Smo.RegSvrEnum.UIConnectionInfo u = 
    new Microsoft.SqlServer.Management.Smo.RegSvrEnum.UIConnectionInfo();

자신의 연결을 만들 수 있어야합니다. 그러나 내가 말했듯이, 나는 아직 그것을 테스트하지 않았습니다. 참조가 필요합니다 Microsoft.SqlServer.RegSvrEnum.dll.

작동하는지 알려주세요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top