PDA

View Full Version : مشکل در ایجاد بانک و جدول



vbkaar
جمعه 09 اسفند 1392, 14:12 عصر
با سلام. من با تابع زیر یک بانک اطلاعاتی ( فایل mdf) رو در مسیر دلخواه میسازم.

Private Sub CreateSqlDatabase(ByVal FileName As String)
Dim con As SqlConnection = New SqlConnection(String.Format("Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirec tory|\MyDB.mdf;Integrated Security=True"))
Dim databaseName As String = Path.GetFileNameWithoutExtension(FileName)
con.Open()
Dim cmd As SqlCommand = con.CreateCommand()
cmd.CommandText = String.Format("CREATE DATABASE {0} ON PRIMARY (NAME={0}, FILENAME='{1}')", databaseName, FileName)
cmd.ExecuteNonQuery()
cmd.CommandText = String.Format("EXEC sp_detach_db '{0}', 'true'", databaseName)
cmd.ExecuteNonQuery()
con.Close()
End Sub


همچنین با تابع زیر یک جدول ساده رو به بانک اضافه میکنم:

Private Sub CreateTable(ByVal DBAddress As String, ByVal TableName As String)
Dim databaseName As String = Path.GetFileNameWithoutExtension(DBAddress)
Dim con As SqlConnection = New SqlConnection(String.Format("Data Source=(LocalDB)\v11.0;AttachDbFilename={0};Integr ated Security=True", DBAddress))
con.Open()
Dim cmd As SqlCommand = con.CreateCommand()
cmd.CommandText = String.Format("CREATE TABLE {0} (Id int NOT NULL PRIMARY KEY IDENTITY(1,1));", TableName)
cmd.ExecuteNonQuery()
con.Close()

End Sub


مثلا به این شکل این توابع رو فراخوانی میکنم:

CreateSqlDatabase("e:\DbTest.mdf")
CreateTable("e:\DbTest.mdf", "tbl1")


حالا مشکل م اینجاست که بعد از ساخت جدول , نمیتونم فایل ساخته شده رو حذف یا حتی کپی کنم. مگر اینکه پروژه رو ببندم و دوباره باز کنم. در ویندوز وقتی میخوام مثلا فایل رو حذف کنم ارور File in Use رو میده : the Action can't be complete because the file is open in Sql Server Windows NT

لطفا اگر کسی دوستان را حلی برای این مشکل داره یا راه دیگری برای ساخت جدول سراغ داره لطفا من رو راهنمایی کنه.

Mohammad_dn
جمعه 09 اسفند 1392, 20:08 عصر
احتمالا برنامه داره از دیتابیس استفاده میکنه...باید ارتباط رو با دیتابیس قطع کنید

vbkaar
شنبه 10 اسفند 1392, 19:09 عصر
مشکلم حل شد. باید در کانکشن , pooling رو false میکردم.