الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تشغيل قاعدة بيانات sql2008 على جهاز به sql2005 - وجملة الاتصال

بدأه رحيّم في 3 أبريل 2013 · 9 رد · 1,741 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

 

 
صممت برنامج بفيجول بيسك 2010  ويتصل بقاعدة بيانات sqlserver2008 ... والآن اتضح أن لدى العميل sqlserver2005 مثبت على جهازه ويستخدمه في برامج أخرى ...  والآن لدي عدة أسئلة أرجو مساعدتي فيها ( كما عهدتكم ) :
 
* كيف أوافق بين الإصدارين من sql  بحيث لا يحدث بينهما تضارب .. ( أي حزمة أثبت عنده الآن - هل توجد حزمة توافق من دون تثبيت الخادم ) ؟
 
* لدى العميل شبكة Ncomputing ( جهاز واحد وشاشات متعددة ) ما أفضل طريقة للتعامل مع ذلك في جملة الإتصال ؟ أنا مبرمج على هذه الجملة : 
 
 Dim con As New SqlClient.SqlConnection("server=" + My.Computer.Name & "\SQLEXPRESS" + ";database=dataname ;integrated security=true")

 

 

* كيف يمكنني أن أجعل البرنامج في بداية كل تشغيل يبحث عن قاعدة البيانات فإن وجدها أقلع وإن لم يجدها يظهر فورم فيه خيار تحديد مكانها ( إدخال عنوان آي بي مثلاً ) - إن أمكن وجود مثال أفضل - ..
 
* الآن سأعطيه النسخة الأولية وبقيت بعض التطويرات ( في البيئة البرمجية فقط , وليس في قاعدة البيانات ) كيف أعمل التحديث للبرنامج من دون أن أعمل setup  كل مرة ؟
 
جزاكم الله خيراً ..
#2

اخي الفاضل

السلام عليكم ورحمة الله وبركاتة

أتمني في المرات القادمة ان تحتوي المشاركة علي سؤال واحد فقط لان من قوانين المنتدي تمنع كتابة اكثر من سؤال في المشاركة الواحده فحتي لا تتعرض مشاركتك للاغلاق او الحذف اتمني

فيما هو قادم الالتزام بقواعد المشاركات

 

وعلي أي حال سأحاول الرد علي بعض الاسئلة المطروحة

 

بخصوص الاستفسار الاول :- يمكنك عمل Database Generate Script من خلال الاصدار 2008 ليقوم البرنامج اخراج القاعده علي شكل Script لتحويلها الي الاصدار 2005

ثم تستطيع بعدها تشغيل هذا الــ Script عند العميل ليقوم البرنامج بانشاء نسخة جديده من قاعده البيانات لكن علي الاصدار 2005

مرفق رابط يشرح الطريقة ولاتنسي ان تختار اثناء عمل هذا الاجراء الاصدار وهو 2005

 

http://blog.sqlauthority.com/2009/07/29/sql-server-2008-copy-database-with-data-generate-t-sql-for-inserting-data-from-one-table-to-another-table/

 

 

بخصوص الاستفسار الثاني :- لا اظن ان السلسلة المرفقة من طرفك يمكنها ان تحدث مشكلة معك وعلي العموم لابد من التجربة للاستفاده من الاخطاء

 

 

بخصوص استفسارك الثالث :- يمكنك كتابة Script او انشاء اجراء مخزن يقوم بفحص القاعده اذا لم تكن موجوده مثلا يفعل اجراء ما مثل انشائها من البدايه او اختيار القواعد المتوفرة في الخادم

 

مثال :- اذا كانت القاعده غير موجوده قم بجلب القواعد المتوفرة علي الخادم

 

if not exists(select * from sys.databases where name = 'Testing')
select name from sys.databases

 

مثال آخر :- اذا كانت غير موجوده قم بانشاء القاعده علي الخادم

 

if not exists(select * from sys.databases where name = 'Testing')
    create database testing

 

بخصوص استفسارك الاخير :- 

راجع الرابط

 

/index.php/topic/276815-%D8%A7%D8%B6%D8%A7%D9%81%D9%87-%D8%AA%D8%AD%D8%AF%D9%8A%D8%AB-%D9%84%D9%84%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D8%AC/

1

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#3

أولاً : أعتذز عن المخالفة .. قلت كلها تشكل وتمشي في موضوع واحد

 

ثانياً  : جزاك الله خيراً    أستاذ محمد

 

جوابك على الاستفسار الأول جربته والحمد لله ( صحيح طلب مني تعديل بعض الحقول لأنها غير مدعومة مثل date  لازم تحوله datetime  ) 

والثاني : أجرب وإن شاء الله يصير خير .

 

الثالث : استفساري عن اظهار فورم لتسجيل عنوان آي بي السيرفر .. ثم يحفظ هذه الاعدادات في النظام للمرات القادمة ..   

الرابع : الرابط الذي وضعته أستاذي قد اطلعت عليه في وقته ( أنا متابع المنتدى ومواضيعه الجديدة يومياً أكثر من مرة ) ولكن ماتم فيه هو مناقشة تحديث قاعدة البيانات وعمل سكربت لها ... وأنا أسأل عن البرنامج التنفيذي ...

عفواُ

#4

البرنامج التنفيذي بمنتهي السهوله تأخذ نسخة من EXE التي قد عملت عليها تحديثات ثم تعمل لها Copy and Replace للملف القديم الموجود عند العميل في مسار البرنامج بدون عمل

setup project جديد

 

لماذا تريد تخزين IP السيرفر عندك في البرنامج طالما ان البرنامج يتصل بالفعل عن طريق سلسلة الاتصال .. طالما ان برنامج SQL Sever تم ربطه بمستخدم من خلال Domain فيمكنك

الاتصال بسهولة عن طريق سلسلة الاتصال

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#5

جزاك الله خيراً

اليوم جربت البرنامج وثبته عند العميل .... هذه الملاحظات والمشاكل التي واجهتني : 

 

في الجهاز الرئيسي : الكود السابق للاتصال لم ينفع .. لكون السيرفر عنده بدون كلمة SQLEXPRESS .. فاضطررت لتعديل الكود كالتالي :

 Dim con As New SqlClient.SqlConnection("server=myserver ;database=dataname ;integrated security=true")

 

فاشتغل تمام والحمد لله

 

لكن في الجهاز المرتبط  ncomputing    وفي الجهاز المرتبظ بالشبكة    لم يعمل   وطلعت الرسالتين المرفقتين ... 

 

لهذا السبب أردت أن أجعل تحديد الآيبي عبر المستخدم ... لأنني رأيت في برنامج عندهم هذه الطريقة وهي شغالة تمام ...

post-11055-0-58061800-1365450074_thumb.j

post-11055-0-88556000-1365450097_thumb.j

#6

من خلال الرسالة المرفقة يتضح لنا ان الــ Client لا يستطيع الاتصال ببرنامج SQL Server الموجود علي الماكينة الاساسية و يجب اثناء تنصيب برنامج SQL Server ان تراعي ربط البرنامج 

بــ

1- Domain account اذا كنت تعمل بنظام الدومين حتي تستطيع باقي الاجهزة التعامل مع القاعده الموجوده علي السيرفر الاساسي

2- النظام الذي اشرت ايه ncomputing لم اسمع عنه من قبل لكن تأكد من ان السيرفس التي تستخدم لاقلاع SQL Server منضبطة هكذا

 

 

NT Network AuthorityNetwork Service

مرفق روابط ربما يساعدك في هذه المسألة

 

http://itknowledgeexchange.techtarget.com/itanswers/client-server-app-on-local-desktop-in-ncomputing-environment/

http://social.technet.microsoft.com/Forums/en-US/winserverTS/thread/8a4cdd4d-10e4-49bf-b292-fa83a861e08c/

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#7

جزاك الله خيراً أستاذي محمد

بالنسبة للموقعين دخلت فيهما ولم أفهم شيء !!!

 

وبالنسبة لما ذكرته سابقاً فلي سؤال : هل ما ذكرته يتعلق بالبرنامج الذي عملته أم بالكمبيوتر تبع العميل أو إعداداته ؟؟

 

لأن العميل لديه برنامج يرتبط بنفس السيرفر ويعمل في جميع الأجهزة ... رأيت في ذلك البرنامج إمكانية تعديل السيرفر بإدخال رقم آي بي أو اسم المستضيف أو خيار أن الجهاز هو الذي به السيرفر ... كذلك فيه خيار تحديد قاعدة البيانات - تظهر جميع قواعد البيانات في السيرفر مثلاً : 2011 - 2012 - 2013 ... يختار العميل مايريد العمل عليه منها .... فلما فتحته وجدت إسم قاعدة بياناتي موجود في تلك القائمة .... بمعنى أنه تعرف عليها .. ولكن برنامجي لم يتعرف عليها ...

إذاً يمكنني القول بأن كود الاتصال الذي استعملته أنا غير كافي للعمل على الشبكة ...

#8

حاول تعديل سلسلة الاتصال كالتالي ربما تعمل معك

1- بحيث تكتب في سلسلة الاتصال IP الجهاز الذي يحوي قاعده البيانات بدلا من اسمه

2- تستخدم المستخدم sa والباص وورد الخاص به في سلسلة الاتصال

 

مثال

 

"server=192.168.26.55\SQLInstance ;database=dataname ;user id=sa;password=123456"

 

اذا لم تفلح هذه الطريقة

 

حاول تعديل اسلوب الاتصال مع القاعده ليكون عن طريق ODBC ربما ايضا يعمل معك

 

شاهد المرفق ربما يفيدك في معرفة هذه الطريقة

SQL_Net.pdf

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#9

جزاكم الله خيراً

 

لقد عدلت كود الاتصال إلى التالي :

Dim con As New SqlClient.SqlConnection("data source=myserver;Initial Catalog=mydatabase;integrated security=sspi;timeout=10")

 

 

فلم يعمل ... ثم لما راجعت موضوع حماية قاعدة البيانات ... جاءتني فكرة عمل قروب ووضع المستخدمين فيه وإعطائهم صلاحيات على القاعدة ... فاشتغل والحمد لله ...

 

ولكن لدي سؤال :

هذا تجريب للبرنامج وعندما ينتهي تماماً فأريد أن أوزعه على عدد من المستخدمين ... وليس كلهم أستطيع الوصول إليهم وتعديل بيانات السيرفر ... الخ ... بل ربما بعضهم ليس لديه إس كيو ال مثبت على الجهاز ... وبعضهم ليس له خبرة في قواعد البيانات والمستخدمين ليقوم بموضوع الصلاحيات ...

فما هي أسلم ,احسن طريقة لحل هذه المشكلة .. وجعل البرنامج يعدل ويتلائم أوتوماتيكي مع العميل ؟

#10

الحل السريع لهذه المسألة 

أن تقوم بالدخول علي جهاز العميل من اي مكان في العالم عن طريق برنامج Teamviewer وعمل هذه الخطوات بنفسك حتي لا تثقل عاتق العميل او المستخدم بهذه الخطوات التقنية التي لا تهمة

 

الحل البرمجي

عليك البحث والاطلاع علي الموضوعات الموجوده في المنتدي او علي شبكة الانترنت للوصول للحل الامثل لان الانظمة تختلف من مكان لاخر

 

مثال

هناك منشآت تعمل بنظام Domain وهناك منشآت تعمل بنظام WorkGroup وهنا نظام آخر NComputer الذي ذكرته انت وكل نظام من الانظمة يحتاج الي تعديلات في البرنامج لكي تتوافق معه

 

باالتوفيق

certifiedj.jpg

 

 

Image Hosted by ImageShack.us

مواضيع مشابهة