使用清单文件和 C# 将 SQL 用户更改为受信任的用户
Change SQL User to Trusted User Using Manifest File and C#
我继承了一个使用 SQL 身份验证和清单文件连接到数据库的项目。我们正在使用 SQL 服务器。
这是清单文件:
<database>
<server>server1\dbname</server>
<catalog>CatName</catalog>
<username>sysuser</username>
<password>ksdjf290384</password>
</database>
这是连接它的代码:
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 身份验证。我不知道如何更改清单文件和代码才能工作。
我已尝试从清单文件和连接器中删除用户名和密码。我试过鞋拔 Trusted_Connection 但似乎没有任何效果。
如果对此有任何想法或想法,我将不胜感激。
看起来它从未被设计为支持 Windows 身份验证。您可以发明一个新的 属性,例如 integratedsecurity
,或者如果 username
缺失或为空,则假设它正在使用 Windows 身份验证。
清单文件:
<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("/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));
}
以下代码应该有效:
Menifast 文件:
<database>
<server>server1\dbname</server>
<catalog>CatName</catalog>
</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);
}
我继承了一个使用 SQL 身份验证和清单文件连接到数据库的项目。我们正在使用 SQL 服务器。
这是清单文件:
<database>
<server>server1\dbname</server>
<catalog>CatName</catalog>
<username>sysuser</username>
<password>ksdjf290384</password>
</database>
这是连接它的代码:
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 身份验证。我不知道如何更改清单文件和代码才能工作。
我已尝试从清单文件和连接器中删除用户名和密码。我试过鞋拔 Trusted_Connection 但似乎没有任何效果。
如果对此有任何想法或想法,我将不胜感激。
看起来它从未被设计为支持 Windows 身份验证。您可以发明一个新的 属性,例如 integratedsecurity
,或者如果 username
缺失或为空,则假设它正在使用 Windows 身份验证。
清单文件:
<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("/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));
}
以下代码应该有效:
Menifast 文件:
<database>
<server>server1\dbname</server>
<catalog>CatName</catalog>
</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);
}