【问题标题】:Create Database Dynamically动态创建数据库
【发布时间】:2013-07-27 01:22:18
【问题描述】:

我正在尝试通过以下代码通过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 - 错误定位服务器/指定的实例)

【问题讨论】:

  • 你的con字符串应该是(localdb)而不是(local)吗?
  • 错误仍然显示

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


【解决方案1】:

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

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

在本例中,它是(local)\netsdk,您显然没有在执行此代码的计算机上安装名为netsdk 的 SQL Server 实例。

【讨论】:

  • 您必须在计算机上运行具有该名称的服务器实例。我不知道如何更具体。如果系统上没有名为 (local)\netsdk 的 SQL Server 实例,则无法在其中创建数据库。如果没有叫玛丽的女人,我就不能称男孩为“玛丽的儿子”。
  • 看起来我需要通过 VB 创建数据库的方法,所以在我对我的应用程序进行 purplish 后,在计算机上运行它,而不需要 SQL Server
  • 不能在没有 SQL Server 的计算机上创建 SQL Server 数据库。它被称为 SQL Server 数据库,因为它需要安装 SQL Server。您的连接字符串显示有一个名为 (local)\netsdkServer,因此 Server 必须存在。您不能在不存在的服务器上创建数据库,无论您多么想这样做。
  • 无需安装服务器即可找到数据库
  • 嗯。什么?我不知道那是什么意思。
【解决方案2】:
New SqlConnection("Server=(local)\netsdk;"

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

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

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

如果您正在构建一个必须在没有安装数据库的情况下运行的单机应用程序,您应该使用像 SQL Compact 这样的嵌入式数据库。数据库在您的应用程序中运行,您无需运行单独的实例。

SQL Compact 的连接字符串与您显示的不同,您需要按照教程进行操作。点击 SQL Compact 页面中的“学习中心”。

【讨论】:

    猜你喜欢
    • 2021-03-23
    • 1970-01-01
    • 2020-05-11
    • 2022-01-10
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    相关资源
    最近更新 更多