SQL Server连接字符串中列出的多个端口

问题描述 投票:1回答:5

我有一个旧版VB6应用程序,其中在INI文件中定义了服务器名,数据库名,用户名等,但是连接字符串的端口号(默认值为1433)在应用程序中进行了硬编码。它被移到新的sql server后端,该后端运行在另一个端口号上。我试图避免不得不更改和重新编译需要大量测试,文档等的应用程序。我试图更改INI文件,以便将新服务器放入:SERVERNAME \ INSTANCE,NEWPORTNUMBER

这将有效地与数据源= SERVERNAME \ INSTANCE,NEWPORTNUMBER,1433建立连接;

当我运行该应用程序时,它似乎已正确连接到数据库。在我看来,.1433部分被忽略了。这是一个有效的假设,还是会导致我在这里没有看到的一些问题?

编辑:在VB6代码中建立连接字符串的字符串方式是:

ConnectString = "Provider=MSDataShape;Trusted_Connection=Yes;Data Source=" & SERVER & ",1433;Initial Catalog=" & DATABASE & ";Data Provider=SQLOLEDB.1;Extended Properties=""Network=DBMSSOCN"""

具有从INI文件中提取的SERVER&DATABASE值。

sql-server vb6 connection-string
5个回答
0
投票

端口1433通常会覆盖INSTANCENAME。 (MS blog Referenceanother

我看到的3个选项:

  • 实例名称被忽略,并且您正在连接到端口1433上的默认实例
  • 命名实例在端口1433上侦听
  • 您有一个客户别名(对此不满意)

0
投票

我们可以看到创建连接字符串的代码吗?

是否有网络原因,您需要使用TCP / IP连接到sql server?

我的猜测是,您只需要包括一个;在服务器名称/实例名称之后,仅将端口号完全省略。这将导致端口号成为连接字符串中的无关数据。我认为这被忽略了。您可以通过创建一个test.udl文件并双击来自己测试创建连接字符串-按照向导进行操作。完成后,连接字符串位于udl文件中,您可以使用记事本查看该文件。

当然,如果要查找连接字符串的语法,则可以在connectionstrings.com上查找它们


0
投票
  1. 下载免费的十六进制编辑器
  2. 将原始文件的副本保存在某处安全
  3. 在十六进制编辑器中打开exe
  4. 找到1433并将其更改为您的新端口号

一旦成功,您就不必重新测试所有内容(就像重新编译一样)如果新端口号不是四位数,则比较棘手(阻力最小的路径:将其更改为四位数端口)

我过去以这种方式更改了连接字符串。VB6 exe始终使用DBCS,因此您可能不得不使用十六进制编辑器,直到您弄清楚如何以正确的方式使用搜索功能。

如果端口号存储为整数,则可能很难查找,但是仍然可以(寻找线索附近的字符串以获取线索)。


0
投票

显然,此应用很快被黑客入侵。尝试通过简单的connect-string-injection像SERVER="{your_server},{your_port};FooBar="来破解它


0
投票

我不确定使用连接字符串的每个库是否都必须以相同的方式解析它。我认为可能有一个库可以解析该连接字符串,并删除最后一个端口号,而另一个库可能会为无效的端口号引发错误。哪些库正在使用该连接字符串?

© www.soinside.com 2019 - 2024. All rights reserved.