2017-11-02 1 views
0
을 사용하여 신뢰할 수있는 사용자로 SQL 사용자 변경

SQL 인증 및 매니페스트 파일을 사용하여 데이터베이스에 연결하는 프로젝트를 상속했습니다. 우리는 SQL Server를 사용하고 있습니다.매니페스트 파일 및 C#

 this.Manifest = new XmlDocument(); 
     this.Manifest.Load(manifestPath); 
     XmlNode rootNode = this.Manifest.DocumentElement.SelectSingleNode("/manifest"); 
     XmlNode dbNode = rootNode.SelectSingleNode("database"); 
     this.Connector = new SqlConnector(string.Format(CONNECTION_STRING_TEMPLATE, dbNode.SelectSingleNode("server").InnerText, dbNode.SelectSingleNode("catalog").InnerText, dbNode.SelectSingleNode("username").InnerText, dbNode.SelectSingleNode("password").InnerText)); 

내가 Windows 인증으로 변경해야합니다

<database> 
    <server>server1\dbname</server> 
    <catalog>CatName</catalog> 
    <username>sysuser</username> 
    <password>ksdjf290384</password> 

</database> 

이 연결로에 대한 코드는 다음과 같습니다

이 매니페스트 파일입니다. 매니페스트 파일과 코드를 변경하는 방법을 알 수 없습니다.

매니페스트 파일과 커넥터에서 사용자 이름과 암호를 삭제 해 보았습니다. Trusted_Connection을 구 tried 주려고 노력했지만 아무것도 작동하지 않는 것 같습니다.

나는 이것에 대한 생각이나 아이디어를 고맙게 생각합니다.

+0

데이터베이스 서버 란 무엇입니까? SQL Server입니까? –

답변

1

Windows 인증을 지원하도록 설계된 적이없는 것처럼 보입니다. 새 속성 (예 : integratedsecurity)을 만들거나 username이 없거나 비어있는 경우 Windows 인증을 사용한다고 가정합니다.

매니페스트 파일 :

this.Manifest = new XmlDocument(); 
this.Manifest.Load(manifestPath); 
XmlNode rootNode = this.Manifest.DocumentElement.SelectSingleNode("/manifest"); 
XmlNode dbNode = rootNode.SelectSingleNode("database"); 
XmlNode userNameNode = rootNode.SelectSingleNode("username"); 
XmlNode passwordNode = rootNode.SelectSingleNode("password"); 
XmlNode integratedSecurityNode = rootNode.SelectSingleNode("integratedsecurity"); 
if (integratedSecurityNode != null || userNameNode == null 
|| string.IsNullOrEmpty(userNameNode)) 
{ 
    this.Connector = new SqlConnector(string.Format("Server={0};Initial Catalog={1};Integrated Security=SSPI;", dbNode.SelectSingleNode("server").InnerText, dbNode.SelectSingleNode("catalog").InnerText); 
} 
else 
{ 
    this.Connector = new SqlConnector(string.Format(CONNECTION_STRING_TEMPLATE, dbNode.SelectSingleNode("server").InnerText, dbNode.SelectSingleNode("catalog").InnerText, userNameNode.InnerText, dbNode.SelectSingleNode("password").InnerText)); 
} 
+0

감사합니다. 트릭을 했어! 나는 바꿔야했다. string.IsNullOrEmpty (userNameNode)) to string.IsNullOrEmpty (userNameNode.ToString()))하지만 다행 이니 :) – Missy

1

다음 코드는 작동합니다 :

Menifast 파일 :

<database> 
    <server>server1\dbname</server> 
    <catalog>CatName</catalog> 
</database> 

코드를

<database> 
    <server>server1\dbname</server> 
    <catalog>CatName</catalog> 
    <integratedsecurity>SSPI</integratedsecurity> 
</database> 

이 연결 코드입니다 :

 this.Manifest = new XmlDocument(); 
     this.Manifest.Load(manifestPath); 
     XmlNode rootNode = this.Manifest.DocumentElement.SelectSingleNode("database"); 
     XmlNode userNameNode = rootNode.SelectSingleNode("username"); 
     XmlNode passwordNode = rootNode.SelectSingleNode("password"); 

     if (userNameNode != null && passwordNode != null) 
     { 

      this.Connector = new SqlConnector(string.Format(CONNECTION_STRING_TEMPLATE, rootNode.SelectSingleNode("server").InnerText, rootNode.SelectSingleNode("catalog").InnerText, userNameNode.InnerText, passwordNode.InnerText)); 

     } 
     else 
     { 
      //Windows authentication 
      this.Connector = new SqlConnector(string.Format("Server={0};Initial Catalog={1};Integrated Security=SSPI;", rootNode.SelectSingleNode("server").InnerText, rootNode.SelectSingleNode("catalog").InnerText); 
     } 
+0

해답을 주셔서 감사합니다 +1 해답을 먼저 게시 한 다른 사람에게 증정했습니다. 이것은 작동 할 것 같은데, 너무 :) – Missy