مشکلات مهاجرت به دیتابیس sql server
باسلام
بنده تصمیم دارم برخی از برنامه ها به ویژه برنامه هایی که در شبکه اجرا و تعداد زیادی کاربر از ان استفاده می کنند را با دیتابیس ساخته شده در sql server باز طراحی کنم از این رو اقدامات زیر را انجام دادم:
برنامه sql server را نصب کردم
دیتابیس مورد نظر را در آن ایجاد کردم
جدوال را از اکسس همراه با اطلاعات درون آن به دیتابیس وارد کردم
تغییرات لازم را در فیلدهای id اتونامبر انتقال داده شده مثل فعال کردن identity انجام دادم
برای دیتابیس یک یوزر و پسورد در بخش سکیوریتی ایجاد کردم
به یوزر ساخته شده دسترسی ها چهارگانه را دادم
در بخش Administrative Tools ویندوز برنامه ODBC Data Sources (32-bit) را اجرا و در تب user dsn با اضافه کردن sql server و انتخاب دیتابیس ساخته شده dsn را ساختم
در برنامه اکسس با اتصال به داده های خارجی ODBC تمام جداول ساخته شده را به صورت لینک به برنامه وارد کردم .
اولین اشکال این بود که تمام جداول به صورت read only بودند
بعد از باز و بسته کردن برنامه برای بازکردن جداول یوزر نیم و پسورد ایجاد شده در sql را باید وارد می کردم
برای ادامه کار لازم است ابتدا مشکل قابل ویرایش بودن جداول حل شود که منتظر راهنمایی اساتید هستم که با شرایط فوق مشکل به چه شکل قابل حل است
لازم به توضیح است اگر جداول در خود برنامه sql ساخته و به برنامه لینک شود این مشکل وجود ندارد
نقل قول: مشکلات مهاجرت به دیتابیس sql server
سلام
از اینکه تجربه خودتون رو به اشتراک گذاشتین متشکرم
قطعا مراحلی رو که انجام دادین و خلاصه وار در بالا ذکر کردین، جای سوال برای برخی از کاربران من جمله حقیر داره. در صورت امکان نحوه تبدیل به sql و کارهای لازم که در بالا به (تغییرات لازم را در فیلدهای id اتونامبر انتقال داده شده مثل فعال کردن identity انجام دادم) اشاره کردین رو بیشتر توضیح بدین.
نقل قول: مشکلات مهاجرت به دیتابیس sql server
نقل قول:
نوشته شده توسط
Mehr@ban
سلام
از اینکه تجربه خودتون رو به اشتراک گذاشتین متشکرم
قطعا مراحلی رو که انجام دادین و خلاصه وار در بالا ذکر کردین، جای سوال برای برخی از کاربران من جمله حقیر داره. در صورت امکان نحوه تبدیل به sql و کارهای لازم که در بالا به (تغییرات لازم را در فیلدهای id اتونامبر انتقال داده شده مثل فعال کردن identity انجام دادم) اشاره کردین رو بیشتر توضیح بدین.
سلام. البته من در ابتدای راهم ولی خوب مسیری که طی کردم در تصاویر لینک زیر می تونید دنبال کنید ( شماره تصاویر ترتیب کار است )
ضمنا برای اتصال به دیتابیس در اس کیو ال از یوزر پس اصلی برنامه استفاده کردم
https://drive.google.com/file/d/11n_...ew?usp=sharing
نقل قول: مشکلات مهاجرت به دیتابیس sql server
نقل قول:
نوشته شده توسط
mohammadsaleh
از اشتراک گذاری تجربیاتتون ممنونم
ولی ظاهرا لینک مورد نظر محدودیت داره
نقل قول: مشکلات مهاجرت به دیتابیس sql server
نقل قول:
نوشته شده توسط
Mehr@ban
از اشتراک گذاری تجربیاتتون ممنونم
ولی ظاهرا لینک مورد نظر محدودیت داره
تست بفرمایید
https://drive.google.com/file/d/11n_...ew?usp=sharing
نقل قول: مشکلات مهاجرت به دیتابیس sql server
حل مشکل خواندنی بودن جداول:
هر جدول باید یک کلید اولیه داشته باشد. در انتقال جداول اکسس به اس کیو ال مثل فیلد اتونامبر فیلد کلید اولیه نیز باید به صورت دستی با راست کلیک روی نام فیلد در حالت دیزاین مشخص شود.
راه حل دیگر اجرای کوئری مشابه زیر استALTER TABLE Persons
ADD PRIMARY KEY (ID);
نقل قول: مشکلات مهاجرت به دیتابیس sql server
نقل قول:
نوشته شده توسط
mohammadsaleh
حل مشکل خواندنی بودن جداول:
هر جدول باید یک کلید اولیه داشته باشد. در انتقال جداول اکسس به اس کیو ال مثل فیلد اتونامبر فیلد کلید اولیه نیز باید به صورت دستی با راست کلیک روی نام فیلد در حالت دیزاین مشخص شود.
راه حل دیگر اجرای کوئری مشابه زیر است
ALTER TABLE Persons
ADD PRIMARY KEY (ID);
ALTER TABLE Persons
ADD PRIMARY KEY (ID);
نقل قول: مشکلات مهاجرت به دیتابیس sql server
با این دستور جداول به صورت کامل لینک و آماده استفاده می شوند
البته مشکلات اصلی تازه شروع شده و اگر فرمهای از قبل اماده داشته باشیم و انها را با کدهای sql نوشته باشیم خطاها یکی بعد از دیگری شروع می شود.
من برای ارتباط با دیتابیس اکسس از کتابخانه DAO و رکوردست استفاده کردم و حالا این کدها جوابگو نیست و یا حداقل در برخی کدها خطاهای جدی می دهد. البته پیشنهاد در رفرنس های موجود بازنویسی کدها با کتابخانه ADO است.( والبته با استفاده از این کتابخانه اساسا نیازی به لینک جداول هم نمی باشد و با ایجاد یک کنکشن ارتباط با سرور به سادگی برقرار می شود)
نمی دانم کدامیک از دوستان این تجربه را از سرگذرانده. حتما راهنمایی های مفید اساتید، امثال بنده که در این مسیر جدید قرار گرفته ایم را کمک زیادی خواهد کرد تا حداقل کمتر آزمون و خطا کنیم
امیدوارم راهی باشد تا همان فرمهای قبلی با جداول لینک شده از اس کیوال سرور هم بدرستی کار کند
نقل قول: مشکلات مهاجرت به دیتابیس sql server
هر دیتابیسی برای خودش یک مصیبت عظمی داره:متعجب: من خودم هم موندم که اکسس رو ادامه بدم یا برم کلا به فکر اس کیو ال سرور باشم .
نقل قول: مشکلات مهاجرت به دیتابیس sql server
نقل قول:
نوشته شده توسط
mohammadsaleh
با این دستور جداول به صورت کامل لینک و آماده استفاده می شوند
البته مشکلات اصلی تازه شروع شده و اگر فرمهای از قبل اماده داشته باشیم و انها را با کدهای sql نوشته باشیم خطاها یکی بعد از دیگری شروع می شود.
من برای ارتباط با دیتابیس اکسس از کتابخانه DAO و رکوردست استفاده کردم و حالا این کدها جوابگو نیست و یا حداقل در برخی کدها خطاهای جدی می دهد. البته پیشنهاد در رفرنس های موجود بازنویسی کدها با کتابخانه ADO است.( والبته با استفاده از این کتابخانه اساسا نیازی به لینک جداول هم نمی باشد و با ایجاد یک کنکشن ارتباط با سرور به سادگی برقرار می شود)
نمی دانم کدامیک از دوستان این تجربه را از سرگذرانده. حتما راهنمایی های مفید اساتید، امثال بنده که در این مسیر جدید قرار گرفته ایم را کمک زیادی خواهد کرد تا حداقل کمتر آزمون و خطا کنیم
امیدوارم راهی باشد تا همان فرمهای قبلی با جداول لینک شده از اس کیوال سرور هم بدرستی کار کند
سلام
همونطور كه خودتون هم اشاره كرديد استفاده از كدهاي ADO و ايجاد كانكشن براي ارتباط با فرمها و جداول مناسب ترين گزينه هست.
ولي اگر از جداول لينك شده توسط odbc استفاده مي كنيد كدهاتون هنوز كار مي كنند و با تغييرات جزيي قابل استفاده هستند.
.........................
موفق باشيد
نقل قول: مشکلات مهاجرت به دیتابیس sql server
سلام و تشکر از اظهار نظرتون
به نظرم حالا که قراره کدهامون رو تغییر بدیم بهتره آنها با ADO بنویسیم. به قول معروف مرگ یک بار شیون هم یکبار
من تصمیم گرفتم این کار رو انجام بدم
برای مثال در قطعه کد زیر می تونیم به سرور و یا دیتابیس اکسس متصل و Recordset فرم، لیست باکس و حتی سابفرم را set کنیم
توجه داشته باشیم که در رفرنس کتابخانه ADO را هم باید انتخاب کنیم
Private Const dBPath = "D:\DBV3.accde"
Dim cn As ADODB.Connection
Dim rst1 As ADODB.Recordset
Dim strServer, strDatabase, strUsername, strPassword As String
Dim strConnectionString As String
strServer = dBPath ' نام سرور
'strDatabase = "Northwind"
'strUsername = "sa"
strPassword = "123" ' پسورد سرور ياديتابيس شما
'sql server
'strConnectionString = "Provider=SQLOLEDB;Data Source=" & strServer & ";Initial Catalog=" & strDatabase & ";User ID=" & strUsername & ";Password=" & strPassword & ";"
' ms access
strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strServer & ";Jet OLEDB:Database Password=" & strPassword & ";"
Set cn = New ADODB.Connection
cn.ConnectionString = strConnectionString
cn.CommandTimeout = 0
cn.Open
Dim strSQL As String
strSQL = "SELECT * " _
& " FROM customer " _
& " Where ( firstname like '%" + txtSearch + "%') " _
& " ORDER BY id ASC"
Set rst1 = New ADODB.Recordset
rst1.Open strSQL, cn, adOpenKeyset, adLockOptimistic
Me.lblCount.Caption = rst1.RecordCount
Set Me.Recordset = rst1
Set Me.subformname.Form.Recordset = rst1
Set Me.List8.Recordset = rst1
rst1.Close
Set rst1 = Nothing
cn.Close
Set cn = Nothing
Exit Sub
نقل قول: مشکلات مهاجرت به دیتابیس sql server
نقل قول:
نوشته شده توسط
mohammadsaleh
سلام و تشکر از اظهار نظرتون
به نظرم حالا که قراره کدهامون رو تغییر بدیم بهتره آنها با ADO بنویسیم. به قول معروف مرگ یک بار شیون هم یکبار
من تصمیم گرفتم این کار رو انجام بدم
برای مثال در قطعه کد زیر می تونیم به سرور و یا دیتابیس اکسس متصل و Recordset فرم، لیست باکس و حتی سابفرم را set کنیم
توجه داشته باشیم که در رفرنس کتابخانه ADO را هم باید انتخاب کنیم
Private Const dBPath = "D:\DBV3.accde"
Dim cn As ADODB.Connection
Dim rst1 As ADODB.Recordset
Dim strServer, strDatabase, strUsername, strPassword As String
Dim strConnectionString As String
strServer = dBPath ' نام سرور
'strDatabase = "Northwind"
'strUsername = "sa"
strPassword = "123" ' پسورد سرور ياديتابيس شما
'sql server
'strConnectionString = "Provider=SQLOLEDB;Data Source=" & strServer & ";Initial Catalog=" & strDatabase & ";User ID=" & strUsername & ";Password=" & strPassword & ";"
' ms access
strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strServer & ";Jet OLEDB:Database Password=" & strPassword & ";"
Set cn = New ADODB.Connection
cn.ConnectionString = strConnectionString
cn.CommandTimeout = 0
cn.Open
Dim strSQL As String
strSQL = "SELECT * " _
& " FROM customer " _
& " Where ( firstname like '%" + txtSearch + "%') " _
& " ORDER BY id ASC"
Set rst1 = New ADODB.Recordset
rst1.Open strSQL, cn, adOpenKeyset, adLockOptimistic
Me.lblCount.Caption = rst1.RecordCount
Set Me.Recordset = rst1
Set Me.subformname.Form.Recordset = rst1
Set Me.List8.Recordset = rst1
rst1.Close
Set rst1 = Nothing
cn.Close
Set cn = Nothing
Exit Sub
راهی که شروع کردم به نظرم راه آسانی نیست و مشکلات یکی یکی خودشو نشون میده
وقتی دیتابیس اکسس بود برای شبکه کردن و اتصال به برنامه حتی با روش ADO کافی بود مسیر برنامه رو بنویسیم و تمام
اما برای اتصال به دبتابیس بانک SQL SERVER حتما تنظیمات دیگه ای هم لازمه.
البته من سعی کردم نام کامپیوتری که در آن برنامه SQL SERVER نصب هست را بنویسم ولی جواب نداد
strserver="\\severComputerName"
و یا حتی نام سرور را هم در ادامه نام کامپیوتر سرور آوردم ولی بی نتیجه بود
تقاضایی که از اساتید دارم اینه که در این قسمت مانند بخشهای دیگر بنده را راهنمایی بفرمایندباتشکر
نقل قول: مشکلات مهاجرت به دیتابیس sql server
من هنوز جواب سئوالم رو دریافت نکردم. البته در سایتهای مرتبط گشتی زدم ظاهرا باید در خود برنامه SQL SERVER تنظیمات مربوط به استفاده در شبکه را انجام داد
و عبارت مربوط به اتصال به سرور را بر آن اساس نوشت. با این حال حتما راه رفته دوستان در این مسیر من را از افتادن در بیراهه کمک خواهد کرد
نقل قول: مشکلات مهاجرت به دیتابیس sql server
نقل قول:
نوشته شده توسط
mohammadsaleh
من هنوز جواب سئوالم رو دریافت نکردم. البته در سایتهای مرتبط گشتی زدم ظاهرا باید در خود برنامه SQL SERVER تنظیمات مربوط به استفاده در شبکه را انجام داد
و عبارت مربوط به اتصال به سرور را بر آن اساس نوشت. با این حال حتما راه رفته دوستان در این مسیر من را از افتادن در بیراهه کمک خواهد کرد
از اين لينك كمك بگيريد:
https://www.connectionstrings.com/
نقل قول: مشکلات مهاجرت به دیتابیس sql server
اينم يك قطعه كد كوچولو براي اتصال به ديتابيس با استفاده از امنيت استاندارد
Dim Cnxn As ADODB.ConnectionDim strCnxn As String
Set Cnxn = New ADODB.Connection
strCnxn = "Provider='SQLOLEDB';Data Source='.';" & _
"Initial Catalog='نام ديتابيس';User ID='يوزر نيم';Password='پسورد';"
Cnxn.Open strCnxn
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open "select * from نام جدول", Cnxn, adOpenDynamic, adLockOptimistic, 1
نقل قول: مشکلات مهاجرت به دیتابیس sql server
فقط خواندنی بودن دیتا بیس فکر میکنم ربطی وارد کردن جداول نداره، مشکل از جایی دیگه باید باشه.
من بارها این کار رو انجم دادم و مشکلی هم نبوده.
دسترسی به دیتا بیس رو با یوزر sa تست کنید
نقل قول: مشکلات مهاجرت به دیتابیس sql server
نقل قول:
نوشته شده توسط
amirzazadeh
اينم يك قطعه كد كوچولو براي اتصال به ديتابيس با استفاده از امنيت استاندارد
Dim Cnxn As ADODB.ConnectionDim strCnxn As String
Set Cnxn = New ADODB.Connection
strCnxn = "Provider='SQLOLEDB';Data Source='.';" & _
"Initial Catalog='نام ديتابيس';User ID='يوزر نيم';Password='پسورد';"
Cnxn.Open strCnxn
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open "select * from نام جدول", Cnxn, adOpenDynamic, adLockOptimistic, 1
سلام ضمن تشکر از توجهتون
منظورتون اینه که در شبکه داخلی که چند کامپیوتر به هم وصل هستند می توانیم از آدرس لوکال برای سرور استفاده کنیم؟
یعنی عبارت Data Source='.'
اما این عبارت در رایانه که برنامه sql نصب هست جواب میده ولی در سایر رایانه ها جواب نمیده؟
نقل قول: مشکلات مهاجرت به دیتابیس sql server
سلام
درست مي فرماييد اين كد در كامپيوتر سرور جواب ميده در ساير كامپيوتر ها بايد نام يا IP كامپيوتر سرور ذكر بشه مثل اين كد:
cn.ConnectionString = "Provider=sqloledb;Data Source=192.168.190.173;Initial Catalog=imexsql;User Id=am;Password=51667;"