ورود

View Full Version : سوال: طریقه کار با MS SQL 2005



mehrad_1989
شنبه 04 آبان 1387, 11:44 صبح
با سلام .
می خواستم چند سمپل جهت کار با MS SQL 2005 در ASP بهم معرفی کنید . ( وصل شدن به دیتابیس, خواندن از دیتابیس , اضافه , ویرایش , حدف )
با تشکر

kashaneh
شنبه 04 آبان 1387, 22:54 عصر
كد اتصال به بانك اطلاعاتي :


<%

'Enter the details of your Microsoft SQL Server and database below
strSQLServerName = "(local)"
strSQLDBUserName = "USER_DATABASE"
strSQLDBPassword = "BANK_PASSWORD"
strSQLDBName = "BANK_NAME"

'MS SQL Server OLE Driver
strCon = "Provider=SQLOLEDB;Server=" & strSQLServerName & ";User ID=" & strSQLDBUserName & ";Password=" & strSQLDBPassword & ";Database=" & strSQLDBName & ";"
Set adoCon = Server.CreateObject("ADODB.Connection")
adoCon.connectionstring = strCon
adoCon.Open

%>


ساير كدهاي مربوط به درج، حذف و خواندن اطلاعات مانند كار با پايگاه Access است.

موفق باشي.

khadem1386
یک شنبه 26 آبان 1387, 08:24 صبح
سلام دوستان

من قبلا با acces کار می کردم ولی حالا دارم به MS SQl کار می کنم
خوب البته دلایل بسیار زیاردی وجود داره که از سیستم های قوی تری مثل MS sql استفاده بشه.

ولی من جواب برعکس گرفتم نمی دونم چرا انقدر سرعت MS SQL در سرور من پایین است.
(منظورم سرور اصلی که در هاستی که خریدم )

مثلا می خوام چهل پنجاه هزار تا رکورد را پاک کنم یا بخوانم یا پر کنم کلی وقت می گیره آخرشم نصفه کاره انجام می ده و error مربوط به script time out می ده یعنی خیلی طور می کشه

من نمونه کُدم را اینجا می گذارم می خوام اگر ممکنه یک راهنمایی بکنید که احتمالا کجای کار خراب است.

وقتی با access این برنامه را می نویسم خوب کار می کنه و سریع عمل می کنه و همه رکورد ها را سریع ردیف می کنه تا پایین. ولی وقتی با sql می شه سرعتش خیلی کم است. و تازه بعد از کلی گذشت زمان عکس العمل نشان می دهد.

به عنوان مثال این برنامه مثلا می خواد تمام رکورد ها را پاک کنه :

table شامل دوتا فیلد (nchar(2), smallINT )و چهل دوهزار رکورد است.



<%
Server.ScriptTimeout=200
%>
<%
strSQLServerName = "xxxxx.xxxxxxx.com"
strSQLDBUserName = "xxxxxxx_xxxxx"
strSQLDBPassword = "xxxxxxxxx"
strSQLDBName = "xxxxxxx_xxxxx"

'MS SQL Server OLE Driver
strCon = "Provider=SQLOLEDB;Server=" & strSQLServerName & ";User ID=" &
strSQLDBUserName & ";Password=" & strSQLDBPassword & ";Database=" &
strSQLDBName & ";"


Set sqlCon = Server.CreateObject("ADODB.Connection")
sqlCon.connectionstring = strCon
sqlCon.Open
set REstateZipcode = Server.CreateObject("ADODB.Recordset")
REstateZipcode.Open "Select * from zipcode order by state" , sqlCon ,3,3
REstateZipcode.MoveFirst

while Not REstateZipcode.EOF

%>

<% = REstateZipcode("State") %>____
<% = REstateZipcode("Zipcode") %> <BR>

<%
REstateZipcode.delete
REstateZipcode.MoveNext
wend

REstateZipcode.close
sqlCon.close

%>

برای توضیح بگم که این table را بوسیله SQL Server Management Studio Express و بصورت remote ساختم
همه تنظیمات هم بصورت پیش فرض بود.

با تشکر از همه دوستان

kashaneh
چهارشنبه 29 آبان 1387, 00:01 صبح
دوست عزيز به يك نكته دقت كنيد كه شما در هنگام كار با تعداد زيادي ركورد بهتر است از اجراي دستورات SQL بدون استفاده از ركوردست استفاده كنيد!!! در اين حالت شما به ميزان قابل توجهي (مخصوصا كار با هزاران ركورد) در منابع سيستم (حافظه اصلي سرور - پردازشگر و ...) صرفه جويي مي كنيد. پيشنهاد مي كنم تغييرات زير را در كد خود بدهيد... به احتمال فراوان بهبود نسبي در فرآيند كاري شما اتفاق خواهد افتاد...
ضمن اينكه يك دليل فرعي جهت كندي كد شما استفاده هاي پي در پي از علامت هاي %> و <% مي باشد كه كامپايلر را دچار سردرگمي مي كند...
موفق باشيد

كد تغيير يافته شما :


<%
Server.ScriptTimeout=200

strSQLServerName = "xxxxx.xxxxxxx.com"
strSQLDBUserName = "xxxxxxx_xxxxx"
strSQLDBPassword = "xxxxxxxxx"
strSQLDBName = "xxxxxxx_xxxxx"

'MS SQL Server OLE Driver
strCon = "Provider=SQLOLEDB;Server=" & strSQLServerName & ";User ID=" &
strSQLDBUserName & ";Password=" & strSQLDBPassword & ";Database=" &
strSQLDBName & ";"

Set sqlCon = Server.CreateObject("ADODB.Connection")
sqlCon.connectionstring = strCon
sqlCon.Open

strSQL = "Delete From zipcode"
sqlCon.Execute strSQL

sqlCon.close

%>