Pregunta

Estoy usando VB 2012 y SQL Server 2012 Localdb

Quiero crear un archivo de base de datos (.mdf) en mi carpeta C:\AppData

p.ej.nombre del archivo de base de datos 0105.mdf & nombre del archivo de registro 0105.ldf

¿Alguien puede decirme el procedimiento?

Puedo conectarme a SQL Server 2012 localdb usando una cadena de conexión

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

Solución 2

gracias Steve Pettifer

Aquí está el código final que funcionó

        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: Ubicación de la carpeta T2.Text: nombre de archivo sin extensión

Otros consejos

Usa SQLCOMMAND.EXECUTENENOQUERY

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

Solo cambia los bits que necesita para cambiar arriba como el grupo de archivos, el crecimiento de archivos y los tamaños iniciales, etc., creo que funcionará, aunque no tengo que LocalDB para hacerlo para probarlo, así que pueda estar un poco fuera del curso.

Editar: estaba fuera de curso y muy libre y fácil con el T-SQL.

Intente esto en su lugar, desde el enlace, agregué en un comentario a continuación.

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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top