动态创建数据库

时间:2013-07-27 01:22:19

标签: sql-server vb.net visual-studio-2010

我尝试通过VB.net通过以下代码动态创建数据库

Dim str As String
Dim myConn As SqlConnection = New SqlConnection("Server=(local)\netsdk;" & _
                                     "uid=sa;pwd=a123;database=master")  

str = "CREATE DATABASE MyDatabase ON PRIMARY " & _
      "(NAME = MyDatabase_Data, " & _
      " FILENAME = 'E:\MyDatabaseData.mdf', " & _
      " SIZE = 2MB, " & _
      " MAXSIZE = 10MB, " & _
      " FILEGROWTH = 10%) " & _
      " LOG ON " & _
      "(NAME = MyDatabase_Log, " & _
      " FILENAME = 'E:\MyDatabaseLog.ldf', " & _
      " SIZE = 1MB, " & _
      " MAXSIZE = 5MB, " & _
      " FILEGROWTH = 10%) "

Dim myCommand As SqlCommand = New SqlCommand(str, myConn)

Try
    myConn.Open()
    myCommand.ExecuteNonQuery()
    MessageBox.Show("Database is created successfully", _
                    "MyProgram", MessageBoxButtons.OK, _
                     MessageBoxIcon.Information)
Catch ex As Exception
    MessageBox.Show(ex.ToString())
Finally
    If (myConn.State = ConnectionState.Open) Then
        myConn.Close()
    End If
End Try

但项目运行时出现以下错误:

  

建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:26 - 查找指定的服务器/实例时出错)

2 个答案:

答案 0 :(得分:2)

您需要运行一个与您在连接字符串中使用的名称相同的实际服务器实例:

Dim myConn As SqlConnection = New SqlConnection("Server=(local)\netsdk;" & _
                                         "uid=sa;pwd=a123;database=master")  

在这种情况下,它是(local)\netsdk,并且您显然没有在执行此代码的计算机上安装名为netsdk的SQL Server实例。

答案 1 :(得分:1)

New SqlConnection("Server=(local)\netsdk;"

这表示您的应用必须连接到计算机上运行的SQL Server实例。

我的应用程序在计算机上运行它而不需要SQL Server

这与你的代码所说的相矛盾。它还与您问题中的sql-server标记相矛盾。你在建什么样的应用程序?一个Windows桌面应用程序?的Winforms?

如果要构建必须在没有安装数据库的情况下运行的单机应用程序,则应使用SQL Compact之类的嵌入式数据库。数据库在您的应用程序内运行,您无需运行单独的实例。

SQL Compact的连接字符串与您显示的不同,您需要遵循教程。单击SQL Compact页面中的“Learning Center”。