I have had difficulty creating a connection string in c# that will connect to a remote SQL server using a public IP, named instance and a port number (other than 1433). Anyone know how to do that?
Try this, replacing 666 with the port number you want to use, 190.190.200.100 with the IP address you want, etc.:
Data Source=190.190.200.100\MyInstance,666;Network Library=DBMSSOCN;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;
connectionString="Database=pub;Server=192.168.1.1\INSTANCE,1746;Trusted_Connection=yes;"
or you can use username/password instead of trusted connection.
Using the servername tcp:<public IP>,<port>
, as documented in SqlConnection.ConnectionString:
The name or network address of the instance of SQL Server to which to connect. The port number can be specified after the server name:
server=tcp:servername, portnumber
When specifying a local instance, always use (local). To force a protocol, add one of the following prefixes:
np:(local)
,tcp:(local)
,lpc:(local)
Data Source must use the TCP format or the Named Pipes format.
TCP format is as follows:
tcp:<host name>\<instance name>
tcp:<host name>,<TCP/IP port number>
If you use the tcp:<host name>\<isntance name>
the SQL Browser service connection is required (port 1433) therefore is better to use the later format, with explicit port name:
Data Source=tcp:1.2.3.4,1234;User Id=...; Password=...
This site has never failed me.
And i am gonna state the obvious here, but it is generally a bad idea to expose your sql server on the internet.. (unless you are using VPN)