как создать базу данных SQL Server с кодом vb.net

Я использую VB 2012 и SQL Server 2012 Localdb.

Я хочу создать файл базы данных (.mdf) в моей папке C:\AppData

например. имя файла базы данных 0105.mdf и имя файла журнала 0105.ldf

Может ли кто-нибудь рассказать мне процедуру?

Я могу подключиться к SQL Server 2012 localdb, используя строку подключения

Data Source=(LocalDB)\v11.0;AttachDbFilename={0};Integrated Security=True;Connect Timeout=30

person Amit Saraf    schedule 11.04.2014    source источник


Ответы (2)


Используйте SqlCommand.ExecuteNonQuery

Imports System.Data.SqlClient

Dim queryString As String = "CREATE DATABASE [0105] ON  PRIMARY (NAME = N'0105', FILENAME = N'C:\APPDATA\Pluto_Data.MDF' , SIZE = 1024KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) " & _
                                "LOG ON (NAME = N'0105_Log', FILENAME = N'C:\APPDATA\0105_Log.LDF' , SIZE = 1024KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )"

    Using connection As New SqlConnection(queryString)
        Dim command As New SqlCommand(queryString, connection)
        command.Connection.Open()
        command.ExecuteNonQuery()
    End Using

Просто измените биты, которые вам нужно изменить выше, такие как файловая группа, рост файла, начальные размеры и т. д. Я думаю, что это сработает, хотя у меня нет LocalDB под рукой, чтобы попробовать, поэтому я могу немного отклониться от курса.

РЕДАКТИРОВАТЬ: я сбился с курса и слишком легко и просто работал с T-SQL.

Попробуйте это вместо этого по ссылке, которую я добавил в комментарии ниже.

Public Function CreateDatabase(ByVal dbName As String, ByVal dbFileName As String) As Boolean

    Try

        Dim connectionString As String = String.Format("Data Source=(LocalDB)\v11.0;Initial Catalog=master;Integrated Security=True")
        Using connection As New SqlConnection(connectionString))

            connection.Open()
            Dim cmd As SqlCommand = connection.CreateCommand()


            DetachDatabase(dbName)

            cmd.CommandText = String.Format("CREATE DATABASE {0} ON (NAME = N'{0}', FILENAME = '{1}')", dbName, dbFileName)
            cmd.ExecuteNonQuery()
        End Using

        If (My.Computer.FileSystem.FileExists(dbFileName)) Then
            Return True
        Else
            Return False
        End If

    Catch
        Throw
    End Try
End Function
person Steve Pettifer    schedule 11.04.2014
comment
err Ключевое слово не поддерживается: 'создать базу данных [0105] на первичном (имя'). - person Amit Saraf; 11.04.2014
comment
ах, вот и все - опасности не иметь его под рукой для тестирования! - person Steve Pettifer; 11.04.2014
comment
Существует демонстрация здесь. Это на C#, но вы можете легко преобразовать его в VB. Это не сильно отличается от того, что я предложил - я думаю, что немного разобрался с опциями, которые вы используете на полном SQL Server. - person Steve Pettifer; 11.04.2014

Спасибо, Стив Петтифер.

Вот окончательный код, который работал

        Dim Conn As New SqlConnection("Data Source=(LocalDB)\v11.0;Initial Catalog=master;Integrated Security=True")
        Using Conn
            Conn.Open()
            Dim cmd As SqlCommand = Conn.CreateCommand
            Dim str As String = "CREATE Database {0} ON (Name= N'{0}', FileName='{1}\{0}.mdf')"
            cmd.CommandText = String.Format(str, T2.Text, T1.Text)
            cmd.ExecuteNonQuery()
        End Using

T1.text : Расположение папки T2.text : Имя файла без расширения

person Amit Saraf    schedule 11.04.2014
comment
О, круто, ты только что опередил меня в моем редактировании :) Рад, что у тебя все получилось. - person Steve Pettifer; 11.04.2014