Pergunta

Estou usando VB 2012 e SQL Server 2012 Localdb

Quero criar um arquivo de banco de dados (.mdf) na minha pasta C:\AppData

por exemplo.nome do arquivo db 0105.mdf & nome do arquivo de log 0105.ldf

Alguém pode me dizer o procedimento?

Posso me conectar ao SQL Server 2012 localdb usando string de conexão

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

Solução 2

Obrigado Steve Pettifer

Aqui está o código final que funcionou

        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.texto:Localização da pasta T2.text:Nome do arquivo sem extensão

Outras dicas

Usar 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

Basta alterar os bits que você precisa alterar acima, como grupo de arquivos, crescimento de arquivos e tamanhos iniciais, etc.Acho que vai funcionar, embora eu não tenha o LocalDB em mãos para experimentá-lo, então posso estar um pouco fora do curso.

EDITAR: Eu estava fora do curso e muito livre e fácil com o T-SQL.

Em vez disso, tente fazer isso, no link que adicionei em um comentário abaixo.

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top