اتصال بانک اطلاعاتی به SQl Server با یک User مشخص
با سلام خدمت دوستان.
من با استفاده از کد زیر یم بانک اطلاعاتی رو به SQl Server متصل میکنم .
ADOCommand1.CommandText :='EXEC sp_attach_db @dbname = N'+QuotedStr('BridgeDB')+','+
'@filename1 = N'+QuotedStr('F:\BridgeProject 2.0\DataBase\BridgeDB_Data.MDF')+','+
'@filename2 = N'+QuotedStr('F:\BridgeProject 2.0\DataBase\BridgeDB_Log.LDF');
ADOCommand1.Execute;
اما این دستور باعث اتصال بانک اطلاعاتی با کاربر SA میشه.
من میخوام با کاربری که خودم ایجاد کردم این بانک اطلاعاتی رو به SQl Server متصل یا اصطلاحا Attach کنم.
ممنون میشم دوستان در این مورد راهنمایی کنند.
یا حق:متفکر:
نقل قول: اتصال بانک اطلاعاتی به SQl Server با یک User مشخص
سلام
دوست عزیز این که با چه کاربری به پایگاه متصل میشید بستگی به طریقه و نحوه Connection String شما داره و دستور Attach نمیتونه تعیین کنه توسط چه کاربری این کار انجام بشه.
برای تغییر این وضعیت شما باید یک User تعریف کنید و کانکشن اصلی برنامه را با آن User تنظیم کنید
پس وقتی کانکشن شما از طریق آن User باشه عمل Attach شما هم تحت تاثیر همان انجام میشود.
مثلا این یه نوع کانکشنی هستش که من خودم توی برنامم ازش استفاده کردم.ومبتنی بر یک User است:
Provider=SQLOLEDB.1;Password=110;Persist Security Info=True;User ID=Hos;Initial Catalog=Sepehr
نقل قول: اتصال بانک اطلاعاتی به SQl Server با یک User مشخص
نقل قول:
نوشته شده توسط
shahriar63
سلام
دوست عزیز این که با چه کاربری به پایگاه متصل میشید بستگی به طریقه و نحوه Connection String شما داره و دستور Attach نمیتونه تعیین کنه توسط چه کاربری این کار انجام بشه.
برای تغییر این وضعیت شما باید یک User تعریف کنید و کانکشن اصلی برنامه را با آن User تنظیم کنید
پس وقتی کانکشن شما از طریق آن User باشه عمل Attach شما هم تحت تاثیر همان انجام میشود.
مثلا این یه نوع کانکشنی هستش که من خودم توی برنامم ازش استفاده کردم.ومبتنی بر یک User است:
Provider=SQLOLEDB.1;Password=110;Persist Security Info=True;User ID=Hos;Initial Catalog=Sepehr
با سلام وتشکر
دوست عزیز ، من خودم میدونم که باید User ایجاد کنم .
شما وقتی که این کد رو اجرا میکنید در حقیقت بانک اطلاعاتی رو به قسمت DataBase برنامه Sql Server متصل میکنید ، ولی هنگام Attach کاربر پیش فرض برای Owner بانک اطلاعاتی انتخاب میشه. در صورتی که من میخوام کاربری که ایجاد کردم به عنوان Owner بانک شناخته بشه.
حالا بعد با دستور Connction String عمل اتصال دلفی با SQl Server رو انجام می دهیم.
پس تا زمانی که بانک اطلاعاتی به SQl Server متصل نیست شما چطوری میخواهید با اون ارتباط برقرار کنید؟
ممنون میشم دوستان راهنمایی کنند.
نقل قول: اتصال بانک اطلاعاتی به SQl Server با یک User مشخص
در پی پاسخ های بیشمار دوستان خودم دست به کار شدم و روش اون رو هم مینویسم تا اگه دوستان خواستند از اون استفاده کنند.
برای این که بتونیم یک بانک اطلاعاتی رو با یک کاربر خاص به SQl Server متصل کنیم میتونید از کد زیر استفاده کنید:
البته مراحلش رو قدم به قدم میگم:
1) اتصال بانک اطلاعاتی که روی هارد قرار دارد به SQL Server:
ADOCO.CommandText:='EXEC sp_attach_db @dbname = N'+QuotedStr('BridgeDB')+','+
'@filename1 = N'+QuotedStr(ExtractFilePath(Application.ExeName)+ 'DataBase\BridgeDB_Data.MDF')+','+
'@filename2 = N'+QuotedStr(ExtractFilePath(Application.ExeName)+ 'DataBase\BridgeDB_Log.LDF');
ADOCO.Execute;
2) ایجاد کاربر مورد نظر در SQl Serevr:
ADOCO.CommandText := 'Exec SP_AddLogin ' + QuotedStr('user name') +
',' + QuotedStr('Password') + ',' + QuotedStr('DataBase name') + ';';
ADOCO.Execute;
3) تغییر Owner یک بانک اطلاعاتی یا اصطلاحا همون کاربر بانک اطلاعاتی
ADOCO.CommandText:='use BridgeDB';
ADOCO.Execute;
ADOCO.CommandText:='EXEC sp_changedbowner '+QuotedStr('UserName');
ADOCO.Execute;
امیدوارم مورد قبول دوستان واقع بشه
یا حق