PDA

View Full Version : مشکل اتصال به دیتابیس



SajjadKhati
پنج شنبه 20 بهمن 1401, 17:53 عصر
سلام
یه مشکل اتصال به دیتابیس دارم (قاتی کردم ، نمیدونم مشکل اتصال دیتابیس هست یا خود دیتابیس یا SSMS) .


اولش که دیتابیس را در Sql Server 2022 ساختم و توی SSMS 19.0 خوب کار میکرد .
VS ام نسخه ی 2022 (دقیق تر 17.3.4) هست که تا این نسخه اش ، نمیتونه با دیتابیس ای که در اون نسخه از Sql Server یا SSMS ساخته شد ، کار کنه .
در واقع پنجره ی Server Explorer ئه VS 2022 ام ، نمیتونه دیتابیسی که درست کردم را بخونه و ارور میده (که تا اینجا ، دور از انتظار نیست) (پس نمیتونم Connection String را از برنامه ی Server Explorer ئه VS بگیرم) .


پس مجبور شدم خودم یه Connection String ای را سرخود تست کنم (چندان بلد نیستم) .
اولش که دیتابیسم در محیط SSMS ، متصل (attach) بود ، در برنامه ی سی شارپ ام ، Connection String ئه زیر را زدم و درست کار کرد :



string connStr = "Server=.;Database=PhoneBookDatabase;Trusted_Connec tion=True;";


=============

اما میخوام که آدرس فایل دیتابیس را بدم . پس مجبور شدم که Connection String را این طور بنویسم :



string connStr = "Server=.;Database=" + path + @"\PhoneBookDatabase.mdf;Trusted_Connection=True;";




که متغییر path ، همون مقدار پروپرتیِ System.Windows.Forms.Application.StartupPath که مسیر پوشه ی برنامه را میگه ، هست (دیتابیس هم توی همون مسیر هست) .

اما وقتی که کد دومِ Connection String را نوشتم ، اولین بار پیام داد که فایل دیتابیس در حال استفاده هست (که بخاطر attach کردن در SSMS بود) . پس ، اتصال فایل دیتابیس را از SSMS ، را رد کردم (detach کردم) .


اما از اون موقع تا حالا ، اولا در سی شارپ ، خطای زیر را میده :


154520


و دوما همون فایل دیتابیس را هم که توی محیط SSMS هم که میخوام attach کنم ، خطای زیر را میده :


154521


و سوما همین فایل دیتابیس ای که قبل از اینکه این اتفاقات بیفته و در جای دیگه کپی کردم (اون موقع تست کردم و سالم بود) را جایگزین این فایلِ دیتابیس کردم ، باز همین ارورها را میده .

چهارما این پروژه و دیتابیس را که توی لپتاپ هم بردم (برای اولین بار و تقریبا با همین نسخه از VS و SSMS) ، باز هم همین ارور ها را میداد .

نمیدونم مشکل از کجاست .
تشکر دوستان .

ROSTAM2
پنج شنبه 20 بهمن 1401, 18:36 عصر
سلام.
چیزی که هست در مورد تصویر اول اینطور که از پیام خطا مشخصه مشکل به server authentication (https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/change-server-authentication-mode?view=sql-server-ver16) بر می گرده.
154523

در مورد تصویر و خطای دوم لینک Copy Message رو کلیک کن ببین توضیحات در مورد خطا چی گفته!

SajjadKhati
پنج شنبه 20 بهمن 1401, 19:47 عصر
سلام.
چیزی که هست در مورد تصویر اول اینطور که از پیام خطا مشخصه مشکل به server authentication (https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/change-server-authentication-mode?view=sql-server-ver16) بر می گرده.
154523

در مورد تصویر و خطای دوم لینک Copy Message رو کلیک کن ببین توضیحات در مورد خطا چی گفته!

سلام
خیلی ممنونم

تصویر اولم مربوط به ویژال استودیو هست .
تنظیمات login ئه sql server instance ئه پیش فرض ام (همونی که باهاش وارد میشم و بنام Desktop.... هست) ، در بخش status اش مثل تنظیمات عکسی که شما دادین هست .

اون عکس دوم ، پیغام زیر را میده :



TITLE: Microsoft SQL Server Management Studio
------------------------------


Attach database failed for Server 'DESKTOP-5D0N9L0'. (Microsoft.SqlServer.Smo)


For help, click: https://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=16.200.48036.0&EvtSrc=Microsoft.SqlServer.Management.Smo.Exceptio nTemplates.FailedOperationExceptionText&EvtID=Attach+database+Server&LinkId=20476


------------------------------
ADDITIONAL INFORMATION:


An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)


------------------------------


Unable to open the physical file "E:\Project\Visual Studio\C#‎.Net\Saved Project\0 Important Project\PhoneBook\PhoneBook\bin\Debug\PhoneBookDat abase.mdf". Operating system error 5: "5(Access is denied.)".
CREATE DATABASE failed. Some file names listed could not be created. Check related errors. (Microsoft SQL Server, Error: 5120)


For help, click: https://docs.microsoft.com/sql/relational-databases/errors-events/mssqlserver-5120-database-engine-error


------------------------------
BUTTONS:


OK
------------------------------





اطلاعات بیشتر هم اینو میده :



===================================


Attach database failed for Server 'DESKTOP-5D0N9L0'. (Microsoft.SqlServer.Smo)


------------------------------
For help, click: https://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=16.200.48036.0&EvtSrc=Microsoft.SqlServer.Management.Smo.Exceptio nTemplates.FailedOperationExceptionText&EvtID=Attach+database+Server&LinkId=20476


------------------------------
Program Location:


at Microsoft.SqlServer.Management.Smo.Server.AttachDa tabaseWorker(String name, StringCollection files, String owner, AttachOptions attachOptions)
at Microsoft.SqlServer.Management.Smo.Server.AttachDa tabase(String name, StringCollection files)
at Microsoft.SqlServer.Management.SqlManagerUI.Attach DatabaseData.PrimaryFile.Attach()
at Microsoft.SqlServer.Management.SqlManagerUI.Attach Database.SendDataToServer()


===================================


An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)


------------------------------
Program Location:


at Microsoft.SqlServer.Management.Common.ServerConnec tion.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType, Boolean retry)
at Microsoft.SqlServer.Management.Common.ServerConnec tion.ExecuteNonQuery(StringCollection sqlCommands, ExecutionTypes executionType, Boolean retry)
at Microsoft.SqlServer.Management.Smo.ExecutionManage r.ExecuteNonQuery(StringCollection queries, Boolean retry)
at Microsoft.SqlServer.Management.Smo.Server.AttachDa tabaseWorker(String name, StringCollection files, String owner, AttachOptions attachOptions)


===================================


Unable to open the physical file "E:\Project\Visual Studio\C#‎.Net\Saved Project\0 Important Project\PhoneBook\PhoneBook\bin\Debug\PhoneBookDat abase.mdf". Operating system error 5: "5(Access is denied.)".
CREATE DATABASE failed. Some file names listed could not be created. Check related errors. (Framework Microsoft SqlClient Data Provider)


------------------------------
For help, click: https://docs.microsoft.com/sql/relational-databases/errors-events/mssqlserver-5120-database-engine-error


------------------------------
Server Name: .
Error Number: 5120
Severity: 16
State: 101
Line Number: 1




------------------------------
Program Location:


at Microsoft.SqlServer.Management.Common.ConnectionMa nager.ExecuteTSql(ExecuteTSqlAction action, Object execObject, DataSet fillDataSet, Boolean catchException)
at Microsoft.SqlServer.Management.Common.ServerConnec tion.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType, Boolean retry)

ROSTAM2
پنج شنبه 20 بهمن 1401, 20:13 عصر
نحوه درست کردنش و تو این تاپیک توضیح داده:
MSSQLSERVER_5120 - SQL Server | Microsoft Learn (https://learn.microsoft.com/en-us/sql/relational-databases/errors-events/mssqlserver-5120-database-engine-error?view=sql-server-ver16)

Configure File System Permissions for Database Engine Access - SQL Server 2014 | Microsoft Learn (https://learn.microsoft.com/en-us/previous-versions/sql/2014/database-engine/configure-windows/configure-file-system-permissions-for-database-engine-access?view=sql-server-2014)

Configure Server Startup Options (SQL Server Configuration Manager) - SQL Server | Microsoft Learn (https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/scm-services-configure-server-startup-options?view=sql-server-ver16)

SajjadKhati
پنج شنبه 20 بهمن 1401, 21:41 عصر
نحوه درست کردنش و تو این تاپیک توضیح داده:
MSSQLSERVER_5120 - SQL Server | Microsoft Learn (https://learn.microsoft.com/en-us/sql/relational-databases/errors-events/mssqlserver-5120-database-engine-error?view=sql-server-ver16)

Configure File System Permissions for Database Engine Access - SQL Server 2014 | Microsoft Learn (https://learn.microsoft.com/en-us/previous-versions/sql/2014/database-engine/configure-windows/configure-file-system-permissions-for-database-engine-access?view=sql-server-2014)

Configure Server Startup Options (SQL Server Configuration Manager) - SQL Server | Microsoft Learn (https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/scm-services-configure-server-startup-options?view=sql-server-ver16)

سلامی مجدد
بله . همون لحظه ی آخر که پیام را براتون فرستادم ، همون موقع تازه فهمیده بودم که این پیام وجود داره .
که توی همون لینک هم نکته ی اولش گفت که مجوز دسترسی اون فایل دیتابیس برای user (در سربرگ security ئه peroperties ئه فایل دیتابیس) را چک کنید که کامل باشه .

و چک کردم و کامل نبود و مشکل دوم (attach نشدن در SSMS) از اونجا بود . احتمالا موقع detach کردن ، این مشکل توی یکبارش پیش اومد . چون گزینه ی drop connection را زمان detach کردن ، نزده بودم و ارور داده بود .

==========

اما ارور اون در سی شارپ (عکس اول) هنوز باقی هست و احتمالا connection string درست نباشه (مطمئن نیستم) .
الان در واقع وقتی دیتابیس را در SSMS ام attach میکنم ، وقتی کد اولین connection string ای که در پست اول داده بودم را میزنم ، یعنی این را میزنم :



string connStr = "Server=.;Database=PhoneBookDatabase;Trusted_Connec tion=True;";


درست کار میکنه (که تقریبا طبیعی هست) .
اما وقتی میخوام آدرس فایل را بدم ، یعنی در کانکشن استرینگ دومی :



string connStr = "Data Source=.;Database=" + path + @"\PhoneBookDatabase.mdf;Trusted_Connection=True;";


همون خطای عکس اول در پست اول (در VS) را میده .
نمیدونید بدون کمک Server Explorer در VS ، چجوری connection string را برای این (با مسیردهی فایل) بنویسم که کار کنه؟

ممنون .

ROSTAM2
پنج شنبه 20 بهمن 1401, 22:23 عصر
سلامی مجدد
بله . همون لحظه ی آخر که پیام را براتون فرستادم ، همون موقع تازه فهمیده بودم که این پیام وجود داره .
که توی همون لینک هم نکته ی اولش گفت که مجوز دسترسی اون فایل دیتابیس برای user (در سربرگ security ئه peroperties ئه فایل دیتابیس) را چک کنید که کامل باشه .

و چک کردم و کامل نبود و مشکل دوم (attach نشدن در SSMS) از اونجا بود . احتمالا موقع detach کردن ، این مشکل توی یکبارش پیش اومد . چون گزینه ی drop connection را زمان detach کردن ، نزده بودم و ارور داده بود .

==========

اما ارور اون در سی شارپ (عکس اول) هنوز باقی هست و احتمالا connection string درست نباشه (مطمئن نیستم) .
الان در واقع وقتی دیتابیس را در SSMS ام attach میکنم ، وقتی کد اولین connection string ای که در پست اول داده بودم را میزنم ، یعنی این را میزنم :



string connStr = "Server=.;Database=PhoneBookDatabase;Trusted_Connec tion=True;";


درست کار میکنه (که تقریبا طبیعی هست) .
اما وقتی میخوام آدرس فایل را بدم ، یعنی در کانکشن استرینگ دومی :



string connStr = "Data Source=.;Database=" + path + @"\PhoneBookDatabase.mdf;Trusted_Connection=True;";


همون خطای عکس اول در پست اول (در VS) را میده .
نمیدونید بدون کمک Server Explorer در VS ، چجوری connection string را برای این (با مسیردهی فایل) بنویسم که کار کنه؟

ممنون .

sql server - SQL connection string for local db - Stack Overflow (https://stackoverflow.com/questions/61446679/sql-connection-string-for-local-db)

در مورد Connection Stringsبهتره از Wizard استفاده کنی
Data Connections از Server Explorer
154524

154525

البته اگر دیتابیس نسخه های قدیمی باشه Test Connection خطا می ده ولی کلید OK رو کلیک کنی مجوز بروزرسانی دیتابیس رو می خواد که با کلید Yes دیتابیس Upgrade می شه.

SajjadKhati
پنج شنبه 20 بهمن 1401, 22:55 عصر
sql server - SQL connection string for local db - Stack Overflow (https://stackoverflow.com/questions/61446679/sql-connection-string-for-local-db)

در مورد Connection Stringsبهتره از Wizard استفاده کنی
Data Connections از Server Explorer
154524

154525

البته اگر دیتابیس نسخه های قدیمی باشه Test Connection خطا می ده ولی کلید OK رو کلیک کنی مجوز بروزرسانی دیتابیس رو می خواد که با کلید Yes دیتابیس Upgrade می شه.

ممنون
گفته بودم .
چون دیتابیس ، اندکی جدیدتر از vs هست ، موقع کلیک روی ok ، ارور جدیدتر از نسخه ی vs بودن را میده .
تشکر