Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在.Net中以编程方式编辑用户DSN?_.net_Sql Server_Odbc_Dsn_Regedit - Fatal编程技术网

如何在.Net中以编程方式编辑用户DSN?

如何在.Net中以编程方式编辑用户DSN?,.net,sql-server,odbc,dsn,regedit,.net,Sql Server,Odbc,Dsn,Regedit,我们有许多终端用户的计算机上有DSN,可以通过Excel连接到我们的SQL Server 现在我们已经迁移了SQL Server,需要将DSN编辑为低于该值(从PrevSQL Server到NewSQLServer) 这个改变需要在许多终端用户的机器上完成,所以我们认为我们将制作一种.exe文件,我们只需要让终端用户双击,DSN就会被编辑 我们考虑使用.Net(默认情况下Windows机器有.Net framework)来实现上面的.exe,在Google上,我意识到这需要通过编辑注册表来完

我们有许多终端用户的计算机上有DSN,可以通过Excel连接到我们的SQL Server

现在我们已经迁移了SQL Server,需要将DSN编辑为低于该值(从PrevSQL Server到NewSQLServer)

这个改变需要在许多终端用户的机器上完成,所以我们认为我们将制作一种.exe文件,我们只需要让终端用户双击,DSN就会被编辑

我们考虑使用.Net(默认情况下Windows机器有.Net framework)来实现上面的.exe,在Google上,我意识到这需要通过编辑注册表来完成,所以进入了regedit,但在那里我没有看到SQL Server名称(要编辑的属性)

在哪里可以在regedit中找到SQL Server名称,我可以通过编程方式对其进行更改?如果是,怎么做

我甚至读过一些ODBC文件,可以通过编辑来实现这一点(而不是搞乱regedit)

我发现了一个文件ODBC.INI,它的条目如下

MIX\u SQL\u PROD=SQL Server(32位)

但该文件中没有SQL Server名称

我怎样才能完成编辑DSN的工作?
在Internet上,我在power shell中找到了一些代码,但不确定是否要使用它,因为我对power shell没有任何专业知识,也不确定默认情况下windows计算机上是否有PowerShell运行时用户DSN在此注册表项下列出:

HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources
有关特定DSN的详细数据保存在此处:

HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\<DSN name>
HKEY\U当前\U用户\Software\ODBC\ODBC.INI\
您可以轻松地将信息导出到reg文件中,只需将其导入用户注册表即可。

两件事:

  • 您可以使用组策略推出DSN更改
  • 只要您正在更改它,请将其更改为使用CNAME,以便将来的移动(将来也会有移动)只是一个地方的DNS更改,而不是您需要跟踪的无数客户端计算机更改

  • 实际上,到目前为止,我有一个N/W别名,用户通过它进行连接,目前我有一个独立的SQL Server实例,因此N/W别名可以指向该SQL Server(与机器名相同)。但现在我正在迁移命名实例,NOC团队说N/W alias可以指向机器,但不能指向命名实例。您的网络工程师是正确的。在解析命名实例时,您可以有效地确保对服务器上的SQL Browser服务进行调用,以解析实例正在侦听的端口。也就是说,如果这是服务器上唯一的实例,那么可以将端口设置为1433(标准SQL端口),并且可能只使用CNAME就可以了。