PDA

View Full Version : چگونگی تشخیص نصب بودن2000 sql server



davodsharif
دوشنبه 10 فروردین 1388, 00:24 صبح
سلام دوستان :
چطور میتونیم ببینیم آیا sql server 2000 نصب است
و چطور از وجود database و table خودم مطمئن بشم ؟

daffy_duck376
دوشنبه 10 فروردین 1388, 14:44 عصر
دوست عزیز با یه دستور TRY ,ecxept میتونی چک کنی اگر SQL نصب باشه و بانک شما نصب دستورات تو TRY اجرا میشه مگر نه دستورات توی ECXEPT مثلا تو قسمت try سعی کنی به بانکت وصل بشی اگه تونستی که بانک نصبه و sql هم نصبه اگه نتونستی پس نصب نیست دیگه دستورات ecxept اجرا میشه

davodsharif
چهارشنبه 12 فروردین 1388, 19:37 عصر
سلام دوست عزيز . ممنون از لطفطون بابت جواب
خاصيت connectionstring رو تو properties مقدار دهي ميكنم . اما گاهي از اوقات ( وقتي كه كاربر database يا sqlserver يا هر دو رو پاك ميكنه برنامه error ميده . من ميخوام اگه اس كيو ال پاك شده اون رو نصب كنم ولي اگه database پاك شده بود فقط ديتابيس رو restore كنم .
تو formshow فرم اصلي تو try ، خاصيت connection string رو مقدار دهي كردم اما باز هم خطا داد (access violatin) . با Eaccessviolaton هم نتونستم خطا يابي كنم


try
adoconnection1.connectionstring :=.......
except
on eaccessviolation do ...
end

merced
پنج شنبه 13 فروردین 1388, 02:38 صبح
sp_helpdb
يك پروسيجر براي ديدن ديتابيس هاي موجود

shervin farzin
پنج شنبه 13 فروردین 1388, 03:23 صبح
سلام
وقتي دنبال جواب در Google ميگرديد عمدتا اشاره به استفاده از كليدهاي رجيستري كردن .

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ MSSQLSERVER
وقتي SQL نصب ميشه ، يه سرويس به سرويسهاي سيستم عامل اضافه ميشه كه در اين صورت
كليد رجيستري فوق بايد وجود داشته باشه .

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ MSSQLSERVER \ MSSQLSERVER
با نصب خود SQL Server 2000 هم كليدي به وجود مياد كه در آدرس بالا مشاهده ميكنيد ، پس
اگه اين كليد باشه ، SQL هم نصب شده .
اما در دو حالت هست كه راههاي بالا جواب درست رو نشون نميدن .
اول : كاربر SQL رو درست Uninstall نكرده پس كليدهاي فوق همچنان سر جاي خودشون هستن
دوم : كليد رجيستري شماره 2 كه نوشتم فقط و فقط براي نگارش 2000 به وجود مياد و در
نگارشهاي بعدي موقعيت كليد متفاوت از چيزي كه الان مي بينيد .
بنابر اين روشهاي رجيستري خيلي قابل اعتماد نيستند .
من در Blog.MSDN كدي به زبان #C پيدا كردم كه به سوال شما جواب ميده . من با #C آشنايي
ندارم اما گمان ميكنم كه از پارامتري در رابطه با Service هاي سيستم عامل استفاده ميكنه .
http://blogs.msdn.com/sqlserverfaq/archive/2009/03/07/how-to-detect-sql-server-instances-features-installed-on-a-machine.aspx
اگه با #C كار كرديد يه نگاهي به اين برنامه بندازيد شايد قابل تبديل و استفاده باشه .

اگه database پاك شده بود فقط ديتابيس رو restore كنم .
براي اين كار Connect بشيد به Master Database . بعد روالي با نام SP_Helpdb رو اجراء كنيد .
در خروجي اين اجراء دو ستون هست به نامهاي Name و dbid كه براي كار شما مهم هستن .
تمام database هاي ساخته شده توسط كاربر مقداري بزرگتر از عدد 6 در ستون dbid دارند و
نام تمام database هايي كه در حال حاضر به SQL Server متصل هستند در ستون Name قرار داره .
براي اين كه چك كنيد آيا Database شما Attach شده يا نه مشابه اين كد بايد بنويسيد :


ADOQuery1.SQL.Text:='exec sp_helpdb';
ADOQuery1.Open;
while not dm.ADOQuery1.Eof do
begin
if (ADOQuery1.FieldValues['dbid'] > 6) and (dm.ADOQuery1.FieldByName('name').AsString= *mydatabase_name* ) then // do something
dm.ADOQuery1.Next;
end;

البته راههاي بهتري هم شايد باشه . پس به جستجو تون ادامه بديد .
موفق باشيد .

davodsharif
پنج شنبه 13 فروردین 1388, 23:55 عصر
ممنون بابت جواب