C# 创建SQL Server DSN
我需要通过代码创建一个DSN来连接SQL Server。我在这个链接中尝试了这个示例,但它总是失败,因为dataSourceKey从不为null。是否有人有不同的解决方案或其他选择 这是代码:C# 创建SQL Server DSN,c#,dsn,C#,Dsn,我需要通过代码创建一个DSN来连接SQL Server。我在这个链接中尝试了这个示例,但它总是失败,因为dataSourceKey从不为null。是否有人有不同的解决方案或其他选择 这是代码: string ODBC_PATH = "SOFTWARE\\ODBC\\ODBC.INI\\"; string driverName = "SQL Server"; string dsnName = "DSNfromCode"; string database = "MyDBName"; st
string ODBC_PATH = "SOFTWARE\\ODBC\\ODBC.INI\\";
string driverName = "SQL Server";
string dsnName = "DSNfromCode";
string database = "MyDBName";
string description = "This DSN was created from code!";
//This is one change I made the source code had the IP of the server and I
//am hardcoding a server name
string server = "Brimstone";
bool trustedConnection = false;
// Lookup driver path from driver name
string driverPath = "C:\\WINDOWS\\System32\\sqlsrv32.dll";
var datasourcesKey = Registry.LocalMachine.CreateSubKey(ODBC_PATH + "ODBC Data Sources");
if (datasourcesKey == null)
{
throw new Exception("ODBC Registry key does not exist");
}
datasourcesKey.SetValue(dsnName, driverName);
// Create new key in odbc.ini with dsn name and add values
var dsnKey = Registry.LocalMachine.CreateSubKey(ODBC_PATH + dsnName);
if (dsnKey == null)
{
throw new Exception("ODBC Registry key for DSN was not created");
}
dsnKey.SetValue("Database", database);
dsnKey.SetValue("Description", description);
dsnKey.SetValue("Driver", driverPath);
dsnKey.SetValue("LastUser", "sa");
dsnKey.SetValue("Server", server);
dsnKey.SetValue("Database", database);
dsnKey.SetValue("username", "sa");
dsnKey.SetValue("password", "system123#");
dsnKey.SetValue("Trusted_Connection", trustedConnection ? "Yes" : "No");
我最后只是从我的电脑中导出注册表项,然后在需要它的电脑上的loadevent()上启动它。为什么需要DSN?通常可以使用连接字符串,它只是一个字符串。我的电脑上有DSN设置,而其他电脑上没有。我只是在想,如果其他人运行该应用程序,他们将需要相同的DSN?我认为Alex的问题是,通常在连接到SQL Server时,您不使用ODBC,而是使用命名空间中内置到.NET的本机客户端,因此不需要创建DSN。@ScottChamberlain-好的,这是有道理的。是的,我明白。但我需要安装DSN,以便在启动access数据库时,链接表能够在另一台PC上“读取”