C# Sql 连接字符串,试图从另一台计算机连接到本地数据库
C# Sql connection string, trying to connect to local db from another computer
我有一个本地 SQL 服务器数据库,我正尝试通过 C# 应用程序中的连接字符串连接到该数据库。
我已尝试使用此连接字符串,我将密码留空,因为我没有在 SQL 登录凭据中提供密码:
Data Source=myComputerIP,1433;Network Library=DBMSSOCN; Initial
Catalog=myDataBase;User ID=myUsername;Password=;
我已经在 SQL 服务器配置管理器中启用 TCP/IP 并启动了 SQL Web 浏览器,打开了端口 1433,SQL 服务器配置为允许远程连接。
我在 C#
中遇到错误
A network related or instance-specific error occurred while establishing the connection to the server.
我是否使用了错误的连接字符串?
我登录 SQL 服务器数据库:
您正在使用 Windows 身份验证,因此您还必须设置 Integrated Security = true。删除用户 ID 和密码。
在 Integrated Security = true 的情况下,连接字符串将获取运行应用程序的用户的凭据
从您附加的 PNG 来看,您似乎正在使用 SQLExpress。默认情况下,这不会在 TCP 端口 1433 上启动。检查 Configuration Manager->Network Config->ProtocolsFor...-> 右键单击 TCP/IP,选择 properties[=31] 中的端口=] 并单击 IP 地址 选项卡
滚动到底部,将 IpAll 部分下的 TCP 端口设置为 1433,重新启动 SQL 服务器,然后重试(或使用此处定义的任何端口在你的连接字符串中)
我还建议对远程客户端使用 SQL 服务器用户而不是 windows - 这样它就可以很好地与 windows 和域等分开
确保您的 SQL 服务器配置为混合模式:
https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/change-server-authentication-mode?view=sql-server-2017
然后您可以通过 SSMS 创建一个登录名(用于数据库服务器)和一个用户名(用于您希望他们访问的特定数据库),或者您可以使用此脚本:
-- Creates the login remoteuser with password 'Pa$$word11'.
CREATE LOGIN remoteuser
WITH PASSWORD = 'Pa$$word11';
GO
-- Creates a database user for the login created above.
CREATE USER remoteuser FOR LOGIN remoteuser;
GO
--grant remoteuser 'datareader' rights
EXEC sp_addrolemember N'db_datareader', N'remoteuser';
--grant remoteuser 'datawriter' rights
EXEC sp_addrolemember N'db_datawriter', N'remoteuser';
您可以通过 SSMS 执行上述所有操作 - 在 Security 节点下添加一个登录名,然后在登录名的属性中也设置数据库级权限。不过,如果您想重复该过程,该脚本更易于管理。
连接字符串类似于:
Data Source=192.168.0.55\SQLExpress;Database=MyDatabase;user=remoteuser;password=Pa$$word11
我有一个本地 SQL 服务器数据库,我正尝试通过 C# 应用程序中的连接字符串连接到该数据库。
我已尝试使用此连接字符串,我将密码留空,因为我没有在 SQL 登录凭据中提供密码:
Data Source=myComputerIP,1433;Network Library=DBMSSOCN; Initial
Catalog=myDataBase;User ID=myUsername;Password=;
我已经在 SQL 服务器配置管理器中启用 TCP/IP 并启动了 SQL Web 浏览器,打开了端口 1433,SQL 服务器配置为允许远程连接。 我在 C#
中遇到错误A network related or instance-specific error occurred while establishing the connection to the server.
我是否使用了错误的连接字符串?
我登录 SQL 服务器数据库:
您正在使用 Windows 身份验证,因此您还必须设置 Integrated Security = true。删除用户 ID 和密码。
在 Integrated Security = true 的情况下,连接字符串将获取运行应用程序的用户的凭据
从您附加的 PNG 来看,您似乎正在使用 SQLExpress。默认情况下,这不会在 TCP 端口 1433 上启动。检查 Configuration Manager->Network Config->ProtocolsFor...-> 右键单击 TCP/IP,选择 properties[=31] 中的端口=] 并单击 IP 地址 选项卡
滚动到底部,将 IpAll 部分下的 TCP 端口设置为 1433,重新启动 SQL 服务器,然后重试(或使用此处定义的任何端口在你的连接字符串中)
我还建议对远程客户端使用 SQL 服务器用户而不是 windows - 这样它就可以很好地与 windows 和域等分开
确保您的 SQL 服务器配置为混合模式: https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/change-server-authentication-mode?view=sql-server-2017
然后您可以通过 SSMS 创建一个登录名(用于数据库服务器)和一个用户名(用于您希望他们访问的特定数据库),或者您可以使用此脚本:
-- Creates the login remoteuser with password 'Pa$$word11'.
CREATE LOGIN remoteuser
WITH PASSWORD = 'Pa$$word11';
GO
-- Creates a database user for the login created above.
CREATE USER remoteuser FOR LOGIN remoteuser;
GO
--grant remoteuser 'datareader' rights
EXEC sp_addrolemember N'db_datareader', N'remoteuser';
--grant remoteuser 'datawriter' rights
EXEC sp_addrolemember N'db_datawriter', N'remoteuser';
您可以通过 SSMS 执行上述所有操作 - 在 Security 节点下添加一个登录名,然后在登录名的属性中也设置数据库级权限。不过,如果您想重复该过程,该脚本更易于管理。
连接字符串类似于:
Data Source=192.168.0.55\SQLExpress;Database=MyDatabase;user=remoteuser;password=Pa$$word11