使用脚本启用到 sql express 的远程连接

Posted

技术标签:

【中文标题】使用脚本启用到 sql express 的远程连接【英文标题】:Enable remote connections to sql express with a script 【发布时间】:2012-02-04 02:09:21 【问题描述】:

我正在使用 sql server express 2008 部署一个应用程序。在我的应用程序的先决条件部分中,我包括:

因此,当用户安装我的应用程序时,它也会安装 sql express。

然后我将能够连接到该数据库引擎:

        try
        
            // database should be in the same network
            SqlConnection conn =
                new SqlConnection(@"Data Source=.\sqlexpress; Integrated Security=True");
            conn.Open();
            MessageBox.Show("Connection succesfull");
        
        catch
        
            MessageBox.Show("Unable to connect");
        

现在,当我安装不同的应用程序(客户端版本)时,我希望能够连接到该数据库引擎。我设法通过执行以下操作连接到它:

        try
        

            SqlConnection conn =
                new SqlConnection(@"Data Source=192.168.0.120\sqlexpress,22559; USER=sa; PASSWORD=*********");
            conn.Open();
            MessageBox.Show("Connection succesfull");
        
        catch
        
            MessageBox.Show("Unable to connect");
        

为了使该代码正常工作,我必须执行以下操作:


所以我的问题是:

如何使用代码进行配置?当我部署我的应用程序时,我希望我的应用程序像它一样安装 sql express,但我还想启用 tcp/IP 连接,启用一些端口,最后为帐户“SA”创建一个密码,因为我无法连接到如果 sa 帐户没有密码,则远程访问数据库。

或者也许我要求太多,我做错了。也许我应该只为我计划部署的数据库而不是数据库引擎来做这一切。更容易的。我很难部署它,也许将本地数据库与 wcf 服务一起部署以便远程在本地数据库上创建 CRUD 操作会更容易。

EIDT

我发现这 3 个链接声称做了类似的事情,但我仍然无法使其正常工作。

1) http://support.microsoft.com/kb/839980

2) http://social.msdn.microsoft.com/Forums/en-US/sqlexpress/thread/c7d3c3af-2b1e-4273-afe9-0669dcb7bd02/

3)http://www.sql-questions.com/microsoft/SQL-Server/34211977/can-not-connect-to-sql-2008-express-on-same-lan.aspx

【问题讨论】:

【参考方案1】:

下载 sql server express 2008 (SQLEXPR32_x86_ENU.exe) 并将其放在我的 C 盘根目录下。然后我使用以下参数安装它:

C:\SQLEXPR32_x86_ENU.exe /q /hideconsole /action=Install /features=SQL /instancename=SQLEXPRESS /enableranu=1 /sqlsvcaccount="NT Authority\Network Service" /AddCurrentUserAsSqlAdmin /skiprules=RebootRequiredCheck /TCPENABLED=1

我添加 /TCPENABLED=1 以启用 TCP/IP

【讨论】:

【参考方案2】:

这些可能会有所帮助,我已经将它放在我的待办事项列表中一段时间​​了,因为我必须为我的应用程序设置的计算机与 Sql Server 2008 Express 一起运行。它基本上是一种设置脚本的方法,SQL08exp 安装程序将根据您在脚本中设置的内容读取并自动执行大量设置。

http://digitalformula.net/articles/how-to-perform-an-unattended-installation-of-sql-server-2008-express/

http://blogesh.wordpress.com/2008/09/23/silent-install-of-sql-server-2008/

【讨论】:

当我部署我的应用程序时,可能已经安装了 sql express,因此我需要在安装了 sql server express 的机器上执行此操作。感谢您的帮助【参考方案3】:

我建议您创建修改后的bootstrapper package 以安装具有自定义功能的 Sql Server 2005 Express。

作为替代方案,您还可以在安装程序中使用自定义操作来使用 SMO 更改目标服务器。

类似这样的:

Server server = new Server( "ServerName\\InstanceName" ); 
server.ConnectionContext.Connect();
server.Settings.LoginMode = ServerLoginMode.Mixed;
server.Settings.Alter();

我们使用 SMO 对象来创建用户登录并将用户关联到我们创建的应用程序数据库..甚至在数据库不可用时运行 sql 脚本来创建数据库..

参考这些链接:Configuring SQL Express During InstallationConfiguring SQL Server when included as a requirement

注意:在 App.config 文件中创建您的 sql server 连接字符串设置,而不是将核心放在代码中。这将帮助您自定义应用程序首先运行自定义,例如数据库创建。

【讨论】:

以上是关于使用脚本启用到 sql express 的远程连接的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server:启用没有 SSMS 的远程连接

跨网络 SQL Server Express

如何用SQL语句修改SQLServer“允许远程连接”设置项?

如何在 SQL Server Express 2008 中创建新数据库并允许连接?

SQL Server Express 连接字符串错误

远程连接MySQL