نحوه بدست آوردن نام سرور اس کیو ال و چند سوال مربوطه
سلام
1-ما چطوری می تونیم اسم سرور sql رو بدست بیاریم؟منظورم بدست آوردن عبارت است.
2- ما اگه فایل دیتا بیسمون رو صفر تا صدش رو با خود اسکیو ال بسازیم و از نوع mdf باشه و بخوایم تو سیستم هدف از کنار فایل اجرایی مون لود بشه کانکشن چی خواهد بود؟
3- ما می تونیم از طریق منیجمنت دیتا بیسمون رو اتچ و دی اتچ کنیم.حالا بخواییم این کارو با vs بکنیم کدهاش چی خواهند بود؟
4-کدهایی جهت ساخت فایل دیتا بیس با ویبی سراغ دارین ؟
نقل قول: نحوه بدست آوردن نام سرور اس کیو ال و چند سوال مربوطه
1-
Dim oTable As Data.DataTable
Dim lstServers As List(Of String)
oTable = System.Data.Sql.SqlDataSourceEnumerator.Instance.G etDataSources
For Each oRow As DataRow In oTable.Rows
If oRow("InstanceName").ToString = "" Then
lstServers.Items.Add(oRow("ServerName"))
Else
lstServers .Items.Add(oRow("ServerName").ToString & "\" & oRow("InstanceName").ToString)
End If
Next oRow
2- کانکشن شما در چنین شرایطی فقط نام دیتابیسش تغییر میکنه و مابقیش ثابته که به راحتی میتونید بسازید.
3- این لینک رو بخون (هرچند این کار خیلی اصولی نیست)
4- کد های ساخت دیتابیی به VB ربطی نداره، باید با SQL بسازید . همونطوری که یک دستور سلکت رو اجرا می کنید می تونید این رو هم اجرا کنید. خیلی کار مشکلی نسیت، هر کاری که تو SQL Server شما با ویزارد انجام میدید اون پست تبدیل به کد میشه و اجرا میشه، در نتیجه برای همه کارها کد معادل وجود داره که متاسفانه بیشتر افراد حتی بدون این که اصول کار با یک ابزاری رو بدونند شروع به استفاده ازش می کنند و در نتیجه هیچ کدوم از اونها رو نمی دونند.
USE master;
GO
CREATE DATABASE Sales
ON
( NAME = Sales_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\saledat.mdf' ,
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = Sales_log,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\salelog.ldf' ,
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB ) ;
GO
CREATE TABLE Persons
(
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);
(مثال از MSDN)
5- طبق قوانین سایت، طرح چند سوال در یک تاپیک خلاف قوانین و مشمول حذف تاپیک می باشد. لطفا قوانین سایت را مطالعه کنید.
نقل قول: نحوه بدست آوردن نام سرور اس کیو ال و چند سوال مربوطه
واقعا جامع بود!!! حال کردم.:تشویق: این هم نمی دونستم نمیشه چندتا سوال پرسید دیگه تکرار نمی کنم.
در مورد کانکشن با اتچ بودن دیتا بیس به sql2008 و روش ویزارد به کانکشن زیر رسیدم:
"Data Source=.\sqlexpress;Initial Catalog=USA;Integrated Security=True"
و همچنین من خودم یرای کانکشن دیتا بیس sql ساخته شده با خد vs از این استفاده می کنم:
"Data Source=.\SQLEXPRESS;AttachDbFilename=" & Data_Source_Adress & ";Integrated Security=True;Connect Timeout=30;User Instance=True"
حالا من امدم اون فایل رو کنار برنامه کپی کردم و با کنکش دوم لود شد.بدون توجه به این که آیا این تو sql اتچ هست یا نه!!! چون ما از یه مسیر دیگه و با دستور قاطع اتچ خوندیم درسته؟ اگه درسته تو این روش دوم اصولا نگرانی از اتچ بودن بانک نداریم؟(درسته؟)
و یک مورد دیگر من امدم دو کانکش رو تلفیق کردم و به این رسیدم:
"Data Source=.\SQLEXPRESS;AttachDbFilename=" & Data_Source_Adress & ";Integrated Security=True"
همون طور که می بینید عبارات :
Connect Timeout=30;User Instance=True
حذف شدن، ولی باز هم کانکشن کار کرد! اگر بودن یا نبودنش فرقی نمیکنه پس چرا تو اولی گذاشته بودن؟
----------------------------------------------
من امدم برا همین پروژم یه ستاپ ساختم و برای اجرایی شدن در سیستم هدف رفتم علاوه بر نت فریم ورک اینها عبارت
sql server 2005 express edition SP2(x86)
رو هم اضافه کردم ولی بعد ساخت فایل نصبی دیدم که فقط این رو داره: sqlexpr32 ، حالا اگه سیستم هدف 64 باشه برنامه کار نمیکنه! یا باید یه چیز دیگه به جای اون عبارت بالایی اضافه کنیم؟
1 ضمیمه
نقل قول: نحوه بدست آوردن نام سرور اس کیو ال و چند سوال مربوطه
نقل قول:
نوشته شده توسط
Mani_rf
1-
Dim oTable As Data.DataTable
Dim lstServers As List(Of String)
oTable = System.Data.Sql.SqlDataSourceEnumerator.Instance.G etDataSources
For Each oRow As DataRow In oTable.Rows
If oRow("InstanceName").ToString = "" Then
lstServers.Items.Add(oRow("ServerName"))
Else
lstServers .Items.Add(oRow("ServerName").ToString & "\" & oRow("InstanceName").ToString)
End If
Next oRow
این کد ها رو امتحان کردم به lstServers خطا میگیره!!! حلا کاری ندارم ریختم تو یه مسیج باکس دیدم اسم سرور رو داد:OMID ولی من با .\SQLEXPRESS وارد می شم !!!
چون شک کردم رفتم با OMID وارد شدم این رو پرت کرد!!!!
ضمیمه 111167
نقل قول: نحوه بدست آوردن نام سرور اس کیو ال و چند سوال مربوطه
نقل قول:
USE master;
GO
CREATE DATABASE Sales
ON
( NAME = Sales_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\saledat.mdf' ,
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = Sales_log,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\salelog.ldf' ,
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB ) ;
GO
CREATE TABLE Persons
(
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
این کدهایی که آدرس دادین برا sql هست من می خوام این کارو با کد نویسی در VS انجام بدم برا این کار باید چه کرد؟
نقل قول: نحوه بدست آوردن نام سرور اس کیو ال و چند سوال مربوطه
جناب آقای Mani_rf من همچنان منتظر پاسخ سوالاتم هستم.
نقل قول: نحوه بدست آوردن نام سرور اس کیو ال و چند سوال مربوطه
با سلام
1- میشه کل دیتابیس رو توسط vb ایجاد کرد
- اجرای کدهای sql از داخل vb ( اسکریپتهای sql را بصورت nonQuery باید اجرا کرد )
- راه اصولی تر استفاده از اشیاء SMO خود sql است که روشی جدیدتر که از sql2008 به بعده که جایگزین DMO در sql2005 شده
2- استفاده از Attached Database اصلا هم راه غیر اصولی نیست و توسط خود میکروسافت طراحی و توصیه شده که قبلا وجود نداشت
3- دقت کنید که هر پارامتری در جای خودش و در زمان مناسبش تاثیراتی داره و بیخود نیست مثلا TimeOut برای جلوگیری از خطای اتصال به پایگاه در زمانیه که سرور پایگاه سرعت ارتباطی مناسبی نداره یا در راه دوری قرار داره پس یک محدودیت زمانی براش میدیم که اگه متصل نشد دوباره برنامه تلاش کنه یا پیغام بده ارتباط برقرار نمیشه
و ...
شما معمولا سوالات دو پهلو و مبهم می پرسید در نتیجه دیرتر به جواب میرسید
موفق باشید