ورود

View Full Version : تغییر نام دیتابیس Attach شده در وی بی دات نت



programmermp
سه شنبه 08 تیر 1389, 00:13 صبح
سلام من با یک کانکشن استرینگ بانک اس کیو ال ام رو attach می کنم بعد با کد زیر اون رو پیدا می کنم


sqledit = "select name from master.dbo.sysdatabases where name='c:\program files\spidms\db.mdf'"
sqlupd = "Update master.dbo.sysdatabases SET name= 'db'"
con = New SqlClient.SqlConnection(strcon)
con.Open()
da5 = New SqlClient.SqlDataAdapter(sqledit, con)
cbcmd.CommandText = sqlupd
cbcmd.Connection = con
cbcmd.ExecuteNonQuery()
ds5.Clear()
da5.Fill(ds5, "sysdatabases")
con.Close()

و تغییر نام می دهم . دلیلش اینه که چون من به برنامه می گم از فلان قسمت از هارد دیتابس رو attach کن و اون هم فایل دیتابیس رو از اون مسیر attach می کنه ولی نام فایل attach شده در دیتابس میشه مسیر فایل+نام فایل+پسوندفایل
من می خواهم کدی داشته باشم که دیتابیسی با همچین نامی رو پیدا کنه که کد بالا این کار رو می کنه و بعد با یک دستور نام اون رو به اسمی که می خواهم تغییر بده که از دستور update استفاده کردم و اون رو در sqlupd قرار دادم ولی در حین اجر پیام خطای زیر رو می ده



Ad hoc update not allowed


چرا این پیام خطا داده می شه ؟ و اگر کار من اشتباه هست چه راهی وجود داره که بتونم نام یک دیتابیس رو که به sql server از طریق وی بی دات نت attach کردم رو تغییر بدم

با تشکر فراوان

Ali_Hashemi
سه شنبه 08 تیر 1389, 00:40 صبح
چرا این پیام خطا داده می شه ؟ و اگر کار من اشتباه هست چه راهی وجود داره که بتونم نام یک دیتابیس رو که به sql server از طریق وی بی دات نت attach کردم رو تغییر بدمبله , کار شما کاملا اشتباه است.
Update کردن جدولهای سیستمی ممکن نیست و به فرض اینکه این کار رو انجام بدهید , نام دیتابیس تغییری نخواهد کرد.
برای تغییر نام آبجکت های SQL (جدول , پروسیجر , ... و یا خود دیتابیس) باید از SP_Rename استفاده کنید.
اینجا (http://msdn.microsoft.com/en-us/library/aa238878%28SQL.80%29.aspx) میتونید روش استفاده از این SP و پارامترهاشو ملاحظه کنید.

programmermp
سه شنبه 08 تیر 1389, 00:41 صبح
سلام
ممنون از پاسخ سریعتون آمدم پست بزارم که این دستور sp_renamedb واسه این کار هست یا نه که جواب شما رو دیدم در هر حال ممنونم

یه سئوال دیگه مرتبط با همین مطلب اگه با کریستال ریپورت کار کردید چه راهی پیشنهاد می کنید که من دیتابیس رو به اون معرفی کنم تا مجبور نشم مسیر دیتابیس رو در کلاینت دقیقا جایی بزارم که در سیستم خودم هست چون موقع تهیه گزارش با کریستال موجود در وی بی دات نت باید برای اینکه فیلد های گزارش رو داشته باشم دیتابیس رو بهش معرفی کنم که نام و مسیر دیتابیس از این طریق استاتیک می شه
راه حل شما واسه این مشکل چیه ؟(این سئوال کاملا با سئوالی که اول پرسیدم در ارتباط هست)
با تشکر فراوان