cómo crear una base de datos de SQL Server con código vb.net
-
21-12-2019 - |
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
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