File

advertisement
‫رشته‪ :‬فناوری اطالعات و ارتباطات‬
‫موضوع‪SQLSEVER(STORED PROCEDURE):‬‬
‫استاد راهنما‪ :‬مهندس سیامک ملک پور‬
‫نگارش‪:‬پرویز جعفرخانی‬
‫‪E-mail:parviz_jafarkhani@yahoo.com‬‬
‫مباحث درباره‪:‬‬
‫‪ -‬ایجاد ‪Stored procedure‬‬
‫ پارامترها‬‫‪ -‬تعریف متغیر‬
‫ دستور اجرا و مثال‬‫‪ -‬شرح چند ‪sp‬‬
‫رویه یا زیر برنامه‪ :‬برنامه های کوچک ومستقل هستند که کار خاصی را انجام می دهند و می توانند‬
‫خروجی هایی داشته باشند‪.‬‬
‫پروسیجر های ‪ sqlserver‬را با ‪ sp‬معرفی می کنند و سه رویه دارند‪:‬‬
‫‪1. Insert‬‬
‫‪2. Update‬‬
‫‪3. delete‬‬
‫برای هر ‪ sp‬می توان یک اسم دلخواه وبا حروف بزرگ یا کوچک بطور کامل یا‬
‫مخفف استفاده کرد‪.‬‬
‫‪( Sp_insert_Rec‬پروسیجر درج رکورد)‬
‫‪( :Permission‬مجوز‪،‬اجازه) برای کسانی که می توانند از ‪sp‬‬
‫‪:Sysadmin‬مدیر گروه یا کل سرور که دسترسی به‬
‫تمام قسمت ها را دارد‬
‫استفاده کنند‪:‬‬
‫‪:Db-owner‬کاربری که با بانک اطالعاتی کار می کند‬
‫دسترسی به جدول‪،‬فیلد‪،‬رکورد‬
‫برای هر پروسیجر می توان یک یا چند پارامتر ارسال نمود روش آن در اعالن ‪sp‬‬
‫است وبا عالمت @ مشخص می شود و پامترها درون () قرار می دهیم‬
‫))‪Creat stored produre my_insert (@ name char(10‬‬
‫پامتر ارسال‬
‫نام دلخواه‬
‫اعالن پروسیجر‬
‫پارامتر می توان عالوه بر مقدار به ‪ sp‬می تواند مقدار نیز برگرداند برای‬
‫این کار از پارامتر ‪ output‬استفاده می کنیم‪:‬‬
‫)‪Creat stored procedure multi (@ x int , @y int output‬‬
‫مقدار برگشتی‬
‫فقط ارسال مقدار‬
‫با استفاده از کلمه کلیدی ‪ DECLAVE‬درابتدا متغیر تعریف می کنیم و‬
‫متغیرها بعداز عبارت ‪ AS‬قرار می گیرند‪.‬‬
‫برای مقدار دهی به متغیر از کلمه ‪ SET‬یا ‪ SELECT‬استفاده می کنیم‪.‬‬
‫یک ‪ SP‬ایجاد کنید که جمع دو پارامتر را انجام دهد؟‬
‫)‪Creat stored procedure sum (@ x int , @ y int‬‬
‫‪As‬‬
‫تعریف متغیر‬
‫‪Declave @ s int‬‬
‫‪Set @s=0‬‬
‫مقدار اولیه‬
‫‪@s=@x+@y‬‬
‫‪Print @s‬‬
‫برای اجرای ‪ sp‬در ‪ query analyzer‬از دستور زیر استفاده می کنیم‪:‬‬
‫اجرای برنامه صفحه قبل‬
‫)‪EXEC sum(2,3‬‬
‫‪ 5‬خروجی‬
sp_dbremove
Removes a database and all files associated with that database.
Important This procedure is provided for backward compatibility only.
For removable media databases, use sp_detach_db to remove a
database from the server.
Syntax
sp_dbremove [ @dbname = ] 'database'
[ , [ @dropdev = ] 'dropdev' ]
Arguments
[@dbname =] 'database'
Examples
This example removes a database named sales and all files associated
with it.
sp_dbremove sales
‫‪Sp_dbremove‬‬
‫حذف يك پايگاه داده به همراه فايل هاي مرتبط با آن پايگاه‬
‫مهمترين مسله ارايه شده و سازگار براي اين روش حذف بانگ هايي كه‬
‫قبال ‪( detach‬جدا شد ن) يا ‪( remove‬حذف) شده اند‪.‬‬
‫اين حذف فیريكي است و پايگاه به طور كامل فايل هاي مرتبط را‬
‫حذف مي كند‪.‬‬
‫نام بانكي كه حذف خواهد شد‬
‫'‪@ dbname='database‬‬
‫'‪@dropdev='dropdev‬‬
‫اگر عملیات حذف موفقیت آمیز =‪ 0‬عدم موفقیت =‪1‬‬
‫اجراي حذف پايگاه داده با فايل هاي مرتبط فقط كاربر كه نقش‬
‫‪ Sysadmin‬را دارد امكان پذير است‪.‬‬
‫‪Exec sp_dbremove sales‬‬
xp_stopmail
Stops a Microsoft® SQL Server™ mail client session.
Syntax
xp_stopmail
Return Code Values
0 (success) or 1 (failure)
Result Sets
xp_stopmail returns this message:
Stopped SQL mail session.
Remarks
If there is no existing SQL Server mail session to stop, a message is
returned.
Permissions
Execute permissions for xp_stopmail default to members of the db_owner
fixed database role in the master database and members of the sysadmin
fixed server role, but can be granted to other users.
‫‪Sp_stopmail‬‬
‫متوقف كردن پست الكتريكي يا ايستگاه )‪(client‬‬
‫با اجراي اين دستور كد بازگشت داده مي شود‬
‫‪ 0‬موفقیت و ‪ 1‬عدم موفقیت‬
‫‪Exec xp_stopmail‬‬
‫مجوز‬
‫اجراي ‪ sp‬فوق به طور پیش فرض ‪ sysadmin , db_owner‬مي توان‬
‫اجرا كرد براي دادن مجوز به ديگران نیز توسط ‪ sysadmin‬است‪.‬‬
sp_adduser
Adds a security account for a new user in the current database. This procedure is
included for backward compatibility. Use sp_grantdbaccess.
Syntax
sp_adduser [ @loginame = ] 'login'
[ , [ @name_in_db = ] 'user' ]
[ , [ @grpname = ] 'group' ]
Arguments
[@loginame =] 'login'
Is the name of the user's login. login is sysname, with no default. login must be
an existing Microsoft® SQL Server™ login or Microsoft Windows NT® user.
[@name_in_db =] 'user'
Is the name for the new user. user is sysname, with a default of NULL. If user is
not specified, the name of the user defaults to the login name. Specifying user
gives the new user a name in the database different from the login ID on SQL
Server.
[@grpname =] 'group'
Is the group or role that the new user automatically becomes a member of. group
is sysname, with a default of NULL. group must be a valid group or role in the
current database. Microsoft SQL Server version 7.0 uses roles instead of groups.
Return Code Values
0 (success) or 1 (failure)
‫‪Sp_adduser‬‬
‫افزودن حساب كاربري به صورت حساب امنیتي براي يك كاربر جديد در بانك جاري سازگار با‬
‫‪sp_grantdb‬‬
‫‪Syntax‬‬
‫'‪@loginname='login‬‬
‫نام كاربر است كه ورود به سیستم )‪ (sysname‬با پیش فرض و بدون پیش فرض البته ورود به‬
‫سايت با ‪ login‬هاي ‪ sql‬و‬
‫‪ Windows nt‬امكان پذير است‪.‬‬
‫‪@name_in_db='user‬‬
‫نام كاربر جديد از كاربر هاي ‪ sysname‬است با پیش فرض ‪ null‬اگر نام كاربر مشخص نشده‬
‫باشد از نام پیش فرض ‪login‬‬
‫كه وارد شده است استفاده مي كند تا بتواند در پايگاه هاي مختلف براي‬
‫او شناسه ورود ايجاد كند‪.‬‬
‫'‪@grpname='group‬‬
‫تعین عضويت در گروه است اگر عضو گرئه ‪( sysname‬مال سیستم)‬
‫با ورودي ‪ null‬هیچ وارد شود البته گروه معتبر در بانك جاري باشد‬
‫تا ‪ sql‬نقش كاربر در گروه را بداند‪.‬‬
‫دقت نام كاربر بین ‪ 1-128‬كاركتر باشد و مجاز به استفاده از حروف واعداد و عالئم هستیم‪.‬‬
‫در نام كاربر نبايد از | ‪ backslash‬و فضاي خالي استفاده كرد‪.‬‬
‫'‪Exec sp_adduser 'haroldq','harold' ,'fort_mudge‬‬
xp_sscanf
Reads data from the string into the argument locations given by
each format argument.
Syntax
xp_sscanf {string OUTPUT, format}
[, argument [,...n]]
Arguments
string
Is the character string to read the argument values from.
OUTPUT
Is a formatted character string similar to what is supported by
the C-language sscanf function. Currently only the %s format
argument is supported.
‫‪Xp_scanf‬‬
‫خواندن يك مقدار رشته اي با قالب مشخص و ذخیره در يك متغیر‬
‫دستور ‪ scanf‬از دستورات زبان ‪ c‬است و كاركتر هاي خوانده شده‬
‫با توجه به قالب ‪ sp‬چون ‪ output‬دارد خروجي خواهد داشت و‬
‫آرگومان اخذ شده به عنوان خروجي به صورت رشته اي نگهداري‬
‫مي شود‪.‬‬
‫آرگومان و فرمت شبیه زبان ‪ c‬است و فقط مدل رشته اي حمايت‬
‫مي كند ‪ %s‬كل دريافت شده رشته اي خواد بود‪.‬‬
‫*اگر ركوردي از جدول با ‪ scanf‬خوانده شود ‪ 50‬پارامتر يا فیلد آن‬
‫را با قالب رشته اي دريافت خواهد كرد‪.‬‬
‫موفقیت آمیز =‪ 0‬عدم موفقیت =‪1‬‬
sp_OADestroy
Destroys a created OLE object.
Syntax
sp_OADestroy objecttoken
Arguments
objecttoken
Is the object token of an OLE object previously created by
sp_OACreate.
Return Code Values
0 (success) or a nonzero number (failure) that is the integer value of the
HRESULT returned by the OLE Automation object.
Examples
This example destroys the previously created SQLServer object.
EXEC @hr = sp_OADestroy @objectIF @hr <> 0BEGIN EXEC
sp_OAGetErrorInfo @object RETURNEND
‫‪Sp_OAdestroy‬‬
‫حذف شي ‪OLE‬‬
‫اگر شي ‪ ole‬توسط ‪ OAcreat‬ايجاد شده باشد يك كد بازگشتي از‬
‫ايجاد شي در ‪ HRESULT‬نگه داري مي شود ‪.‬‬
‫فقط اعضاي ‪ sysadmin‬يا مواردي كه نقش دارند مي توانند‬
‫‪ Sp_OAdestroy‬را اجرا كنند اين ‪ sp‬حذف فقط پارامتر آن شي‬
‫است‪.‬‬
‫‪Exec @hr =sp_OAdestroy @object‬‬
‫‪If @hr <>0‬‬
‫‪Begen‬‬
‫‪Exce sp_OAgetErrorInfo @object‬‬
‫‪Return‬‬
‫‪End‬‬
‫‪ 0‬موفقیت‬
‫بعداز اجرای ‪ sp‬نتیجه حذف شی موجود‬
‫در متغیر ‪ hr‬ذخیره می شود‪.‬‬
‫‪ N‬عدم موفقیت‬
‫چنانچه ‪ hr=0‬شد حذف صورت گرفته و اگر ‪ hr<>0‬شد ‪ sp‬مربوط به‬
‫اعالم اطالعات خطا اجرا و مشاهده عدم حذف گزارش می شود‪.‬‬
sp_attach_db
Attaches a database to a server.
Syntax
sp_attach_db [ @dbname = ] 'dbname'
, [ @filename1 = ] 'filename_n' [ ,...16 ]
Arguments
[@dbname =] 'dbname'
Is the name of the database to be attached to the server. The name must be
unique. dbname is sysname, with a default of NULL.
[@filename1 =] 'filename_n'
Is the physical name, including path, of a database file. filename_n is
nvarchar(260), with a default of NULL. There can be up to 16 file names
specified. The parameter names start at @filename1 and increment to
@filename16. The file name list must include at least the primary file, which
contains the system tables that point to other files in the database. The list
must also include any files that were moved after the database was detached.
‫‪SP_attach‬‬
‫افزودن یا اضافه کردن یک بانک اطالعاتی به سرور‬
‫‪Syntax‬‬
‫'‪sp_attach_db [ @dbname = ] 'dbname‬‬
‫] ‪, [ @filename1 = ] 'filename_n' [ ,...16‬‬
‫آیا نام بانک به سرور وصل شده است منحصر به فرد است باید نام‬
‫از بانک های موجود در ‪( sysname‬سیستم) باشد با پیش فرض‬
‫خالی(رکوردی نداشته باشد)‬
‫به صورت فیزیکی نام هر فایل عبارت است مسیر و اسم فایل از‬
‫یک بانک اطالعاتی ‪.‬‬
‫*نام حداکثر ‪ 260‬کارکتر است‬
‫*می توان درهر مرحله (وصل کردن) ‪ 1-16‬فایل ومسیر بکار‬
‫ببریم‪.‬‬
Examples
This example attaches two files from pubs to the current server.
EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL
Server\MSSQL\Data\pubs_log.ldf'
‫ را به متغیر‬pubs.mdf ‫ کارکتر می تواند باشد فایل‬260 ‫از یک مسیر طوالنی که‬
‫ آنرا به سرور وصل کند فایل‬sp ‫ نسبت می دهد تا‬filename1 ‫یا پرامتر‬
.‫ قبال موجود است‬pubs.mdf
‫‪sp_get_distributor‬‬
‫‪Determines whether a Distributor is installed on a server. This stored‬‬
‫‪procedure is executed at the computer where the Distributor is being‬‬
‫‪looked for, on any database.‬‬
‫‪Syntax‬‬
‫‪sp_get_distributor‬‬
‫تعیین یک توزیع کننده روی سرور‬
‫با اجرای این ‪ sp‬تعیین می شود یک توزیع کننده (یکسان سازی روی‬
‫بانک) نقش عمومی عرض و ارتفاع سلول ها را یکسان میکند تا در ‪Query‬‬
‫(گزارشات) جدول یکسان و قالب خوبی داشته باشد‪.‬‬
‫فقط اجرا است و پارامتر ندارد وجدول های بانک را مرتب می کند از لحاظ‬
‫سطر و ستون و حتی رکورد های تکراری را کنار هم قرار می دهد و اجرا‬
‫عمومی است و کاربران نیز می توانند ‪ sp‬را اجرا نمایند‪.‬‬
sp_add_maintenance_plan
Adds a maintenance plan and returns the plan ID.
Syntax
sp_add_maintenance_plan [ @plan_name = ] 'plan_name' ,
@plan_id = 'plan_id' OUTPUT
Arguments
[@plan_name =] 'plan_name'
Specifies the name of the maintenance plan to be added. plan_name
is varchar(128).
@plan_id = 'plan_id'
Specifies the ID of the maintenance plan. plan_id is uniqueidentifier.
Return Code Values
0 (success) or 1 (failure)
Remarks
sp_add_maintenance_plan must be run from the msdb database and
creates a new, but empty, maintenance plan. To add one or more
databases and associate them with a job or jobs, execute
sp_add_maintenance_plan_db and sp_add_maintenance_plan_job.
‫‪sp_add_maintenance_plan‬‬
‫‪Adds a maintenance plan and returns the plan ID.‬‬
‫افزودن یک تعمیر و نگهداری به سیستم وبرگشت کد ‪plan id‬‬
‫‪Syntax‬‬
‫‪sp_add_maintenance_plan [ @plan_name = ] 'plan_name' ,‬‬
‫تعین یک اسم برای برنامه نگهداری با حداکثر ‪ 128‬کارکتر‬
‫باز کردن یک کد توسط زیر برنامه و ذخیره در ‪plan id‬‬
‫مقدار برگشتی‪:‬‬
‫‪@plan_id = 'plan_id' OUTPUT‬‬
‫موفقیت آمیز =‪ 0‬عدم موفقیت =‪1‬‬
‫این ‪ sp‬باید توسط ‪ sysadmin‬از ‪ msdb‬اجرا گردد تا برنامه ریزی نگداری برای‬
‫یک یا چند پایگاه داده که براساس کار یا شغل خاص هستند انجام گیرد‪.‬‬
Examples
Create a maintenance plan called Myplan.
DECLARE @myplan_id UNIQUEIDENTIFIEREXECUTE
sp_add_maintenance_plan N'Myplan',@plan_id=@myplan_id
OUTPUTPRINT 'The id for the maintenance plan "Myplan"
is:'+convert(varchar(256),@myplan_id)GO'The id for the maintenance plan
"Myplan" is:' FAD6F2AB-3571-11D3-9D4A-00C04FB925FC
planid ‫ یک برنامه نگهداری ایجاد می شود و یک کد‬myplan ‫این برنامه به نام‬
.‫ایجاد خواهد کرد‬
.‫ نگهداری خواهد شد‬planid ‫این کد بعدا برای حذف الزم خواهد شد و در‬
'The id for the maintenance plan "Myplan" is:' FAD6F2AB-3571-11D3-9D4A-00C04FB925FC
sp_ActiveDirectory_Obj
Controls the registration of a Microsoft® SQL Server™ database in the
Microsoft Windows® 2000 Active Directory™.
Syntax
sp_ActiveDirectory_Obj [ @Action = ] N'action'
[, [ @ObjType = ] N'database' ]
, [ @ObjName = ] N'database_name'
Arguments
[ @Action = ] N'action'
Specifies whether the Active Directory object registering the SQL Server
database is to be created, updated, or deleted. action is nvarchar(20)
with a default of N'create'.
‫ (بانک اطالعاتی) جهت استفاده در ویندوز‬sql ‫کنترل نمودن ریجستری در‬
: Active directory
‫لیست جداول و بانک های اطالعاتی را نگهداری می کند لذا افزوده شدن به‬
‫ را خواهد‬windows ‫بانک اطالعاتی و قابلیت مدیریت با‬win ‫پوشه فوق در‬
.‫داشت‬
Syntax
sp_ActiveDirectory_Obj [ @Action = ] N'action'
‫تعیین نوع عمل طبق جدول زیر برای اعمال روی بانک اطالعاتی پیش‬
.‫ است‬Nactive ‫ کارکتر یا خود‬20 ‫فرض‬
Value
Description
create
Registers the SQL Server database in the Active Directory by
creating an MS-SQL-SQLDatabase object in the directory. The
MS-SQL-SQLDatabase object records the attributes of the
database at the time the create action is performed. If you specify
create and the database is already registered, an update action is
performed.
update
Refreshes the attributes registered for the database in the Active
Directory by updating the attributes recorded in the MS-SQLSQLDatabase object in the Active Directory. If you specify update
and the database is not registered, a create action is performed.
delete
Removes the Active Directory registration for the database by
deleting the MS-SQL_SQLDatabase object from the Active
Directory.
‫‪:Creat‬چنانچه از قبل پایکاه ‪ sql‬ایجاد شده باشد بروز رسانی می شود و‬
‫اگر بار اول باشد در اکتیودایرکتوری با پیش فرض های الزم اضافه گردد در‬
‫پوشه به نام ‪ MS-SQL-SQLDB‬ذخیره می شود‪.‬‬
‫‪ :Update‬به روز رسانی صفات پایگاه داده از قبل ثبت شده در‬
‫اکتیودایرکتوری‪.‬‬
‫‪:Delete‬حذف دایرکتوری فعال برای پایگاه داده یا حذف‬
‫‪MS-SQL-SQLDB‬‬
‫‪: MS-SQL-SQLDB‬در واقع یک شی در دایریکتوری فعال ویندور خواهد‬
‫بود که قابلیت( ایجاد‪-‬به روز رسانی – حذف) را دارد‬
‫تا پایگاه داده ‪ sql‬نیز با این کار مدیریت گردد‪.‬‬
‫] '‪[ @ObjType = ] N'database‬‬
‫تعیین نوع درخواست پایگاه داده و انجام عمل در خواستی‬
‫'‪[ @ObjName = ] N'database_name‬‬
‫تعیین نام باتک اطالعاتی که عمل ثبت نام روی آن انجام می شود واز قوانین‬
‫شناسه ها پیروی می کند و به این نام در دایرکتوری فعال توسط ‪ sp‬فوق‬
‫ایجاد خواهد شود‪.‬‬
‫موفقیت آمیز =‪ 0‬عدم موفقیت =‪1‬‬
Examples
This example registers the Northwind database from the current instance
of SQL Server in the Active Directory.
DECLARE @RetCode INTEXEC @RetCode = sp_ActiveDirectory_Obj
@Action = N'create', @ObjType = N'database', @ObjName =
'Northwind'PRINT 'Return code = ' + CAST(@RetCode AS VARCHAR)
‫ را به عنوان یک پایگاه داده در‬sql ‫ از‬Northwind ‫مثال ارائه شده ثبت پایگاه داده‬
‫@ نگهداری می‬Retcode ‫دایرکتوری فعال است که عملیات بازگشتی در متغیر‬
.‫شود‬
sp_password
Adds or changes a password for a Microsoft® SQL Server™ login.
Syntax
sp_password [ [ @old = ] 'old_password' , ]
{ [ @new =] 'new_password' }
[ , [ @loginame = ] 'login' ]
Arguments
[@old =] 'old_password'
Is the old password. old_password is sysname, with a default of NULL.
[@new =] 'new_password'
Is the new password. new_password is sysname, with no default. old_password must
be specified if named parameters are not used.
[@loginame =] 'login'
Is the name of the login affected by the password change. login is sysname, with a
default of NULL. login must already exist and can only be specified by a member of the
sysadmin fixed server role.
Return Code Values
0 (success) or 1 (failure)
Remarks
SQL Server passwords can contain from 1 to 128 characters, including any letters,
symbols, and numbers.
The new password is updated and stored in an encrypted form so that no user, not
even system administrators, can view the password.
‫‪Sp_pass‬‬
‫افزودن یا تغییر رمز کاربر ورودی در ‪sql‬‬
‫رمز عبور قدیم یا با پیش فرض خالی وارد گردد (البته خالی به خاطر ‪sysname‬‬
‫بودن این پارامتر است)‬
‫رمز جدید بدون پیش فرض خالی مورد قبول ‪ sysname‬با پارامتر وارد گردد‪.‬‬
‫ورود به سایت با عضو نقش ‪ sysadmin‬و حتی با پیش فرض خالی (ایجاد خواهد‬
‫شد)‬
‫موفقیت آمیز =‪0‬‬
‫برای اعمال تغییر رمز نتیجه ‪: sp‬‬
‫عدم موفقیت =‪1‬‬
.‫عدد) خواهد بود‬-‫نماد‬-‫ کارکتر با (حروف‬1-128 ‫رمز در محدوده‬:‫توضیحات‬
‫رمز عبور جدید کاربران در فرمی در‬sql ‫طوری رمزگزاری می شوند که حتی‬
‫مدیران هم نمی توانند مشاهده کنند‬
A. Change the password of a login without the former password
This example changes the password for the login Victoria to ok.
EXEC sp_password NULL, 'ok', 'Victoria'
:‫مثال‬
:‫ را اجرا می کند‬sp ‫ شخص با رمز قدیم وارد شده و‬A ‫در مثال‬
‫ برای ورود به سایت ویکتوریا‬ok ‫تغییر رمز عبور هیچ‬
B. Change a password
This example changes the password for the login Victoria from ok to coffee.
EXEC sp_password 'ok', 'coffee'
‫تغییر رمز ویکتوریا به قهوه‬:B
‫‪sp_catalogs‬‬
‫‪Returns the list of catalogs in the specified linked server, which is equivalent to‬‬
‫‪databases in Microsoft® SQL Server™.‬‬
‫ایجاد یک لیست کاتالوگ که نتایج بازگشتی ‪ sp‬هاست برای پیوند به سرور‬
‫همانند پایگاه داده در ‪ sql‬عمل می کند‪.‬‬
‫در واقع یک پایگاه داده از بازگشت های ‪ sp‬به صورت کاتالوگ ایجاد می کند‪.‬‬
‫‪Syntax‬‬
‫'‪sp_catalogs [ @server_name = ] 'linked_svr‬‬
‫نام سرور مرتبط را می دهیم بدون پیش فرض البته ‪ sysname‬یعنی نامی که در‬
‫سیستم داریم‪.‬‬
‫‪sp‬مجوز‪:‬به طور پیش فرض به صورت عمومی دسترسی دارند و می توانند‬
‫فوق را اجرا کنند‪.‬‬
Examples
This example returns catalog information for the linked server named OLE DB
ODBC Linked Server #3.
:‫مثال‬
‫ وجود داشته باشد کاتالوگ نتایج‬OLE DB ODBC LINKED ‫برای مسیر‬
.‫فروشگاه را به آن برگشت یا پیوند می زند‬
USE master
sql ‫استفاده از بانک اطالعاتی موجود‬
EXEC sp_catalogs 'OLE DB ODBC Linked Server #3'
.‫ ذکر شده لینک می کند‬OLE ‫ فوق نتایج را به‬sp ‫اجرا‬
‫‪sp_delete_maintenance_plan‬‬
‫‪Deletes the specified maintenance plan.‬‬
‫حدف برنامه تعمیر و نگهداری برای نقشه مشخص شده‬
‫‪Syntax‬‬
‫'‪sp_delete_maintenance_plan [ @plan_id = ] 'plan_id‬‬
‫حذف شناسه ‪ ID‬نگداری شده و منحصر به فرد که قبال ایجاد شده است‪.‬‬
‫موفقیت آمیز =‪0‬‬
‫باشد باید از پایگاه ‪ msdb‬که این‬
‫‪ sp‬را دارد اجرا گردد‪.‬‬
‫اگر عمل حدف‬
‫عدم موفقیت =‪1‬‬
‫تذکر‪:‬‬
‫شخصی که نقش ‪ sysadmin‬را دارد می تواند آن را از ‪msdb‬‬
‫اجرا و حذف نماید‪.‬‬
Examples
Deletes the maintenance plan created with sp_add_maintenance_plan.
EXECUTE sp_delete_maintenance_plan 'FAD6F2AB-3571-11D3-9D4A00C04FB925FC'
‫مثال باال حذف برنامه تعمیر و نگه داری خلق شده که آن را می دانیم وارد و آن‬
.‫را حذف می کند‬
‫‪xp_sprintf‬‬
‫‪Formats and stores a series of characters and values in the string output parameter.‬‬
‫‪Each format argument is replaced with the corresponding argument.‬‬
‫‪Syntax‬‬
‫}‪xp_sprintf {string OUTPUT, format‬‬
‫]]‪[, argument [,...n‬‬
‫ذخیره کاراکتر های اخذ شده درون متغیر و یا جایگزین در یک متغیر‬
‫‪ Printf‬در زبان ‪ c‬برای نمایش محتوای اخذ شده توسط‬
‫‪Scanf‬است در این جا با داشتن ‪ output‬قادر به ارسال مقادیر به یک متغیر با‬
‫مکان مشخص است بدیهی است اگر ‪ scanf‬زبان ‪ c‬فقط ‪ %S‬رشته‬
‫پذیرفته‪،‬دستور ‪ printf‬قابلیت چاپ ‪ %S‬رشته را دارد‪.‬‬
‫‪@y=exce sp_printf‬‬
‫نتیجه اجرای این ‪sp‬گسترش یافته روی پایگاه که قبال رکوردی از آن خوانده شده‬
‫به محیط بیرون یا به درون متغیری در خارج است و ‪ sql‬قادر به نمایش متغیر با‬
‫سایر توابع است‪.‬‬
‫ارسال نتایج به ‪ @y‬و برای نمایش کافی است‪.‬‬
sp_generatefilters
Creates filters on foreign key tables when a specified table is replicated. This
stored procedure is executed at the Publisher on the publication database.
Syntax
sp_generatefilters [ @publication =] 'publication'
Arguments
[@publication = ] 'publication'
Is the name of the publication to be filtered. publication is sysname, with no
default.
Return Code Values
0 (success) or 1 (failure)
‫ایجاد فیلترهایی برای جدول های تکراری میزکار(جدول هایی که در حال کار با آن‬
‫هستیم) البته فیلترها در بخش انتشارات پایگاه داده موجود است فقط نام آن ها‬
:‫ذکر می کنیم در پارامتر مقابل‬
sp_generatefilters [ @publication =] 'publication'
‫اسم یک فیلتر‬
Remarks
sp_generatefilters is used in merge replication.
Permissions
Only members of the sysadmin fixed server role or the db_owner fixed
database role can execute sp_generatefilters.
‫ می دهد در غیر‬0 ‫اگر فیلتر با موفقیت روی جدول های میز کار اثر کند مقدار‬
.‫ می دهد‬1 ‫این صورت‬
‫ (مالک) را دارند اجازه صدور فیلتر از‬db-owner‫ و‬sysadmin ‫فقط کاربران نقش‬
.‫انتشارات را بر روی چند جدول را دارند‬
sp_renamedb
Changes the name of a database.
‫تغیر نام بانک اطالعاتی‬
Syntax
sp_renamedb [ @dbname = ] 'old_name' ,
‫نام قدیم بانک اطالعاتی وارد شود‬
[ @newname = ] 'new_name'
‫نام جدید بانک اطالعاتی وارد شود‬
Arguments
[@dbname =] 'old_name'
Is the current name of the database. old_name is sysname, with no default.
[@newname =] 'new_name'
Is the new name of the database. new_name must follow the rules for
identifiers. new_name is sysname, with no default.
‫ است و پیش فرض نمی‬sysname ‫بانک قدیم باید وجود داشته باشد واز‬
‫ نام جدید جایگزین شناسه می شود که همان نام قدیم بانک‬.‫شود‬
.‫اطالعاتی است‬
‫موفقیت آمیز =‪0‬‬
‫نتیجه‪:‬‬
‫عدم موفقیت =‪1‬‬
‫فقط ‪ sysadmin‬یا کاربری که نقش ‪ admin‬را دارد می تواند تغییر نام دهد‪.‬‬
‫’‪‘accounting’ , ‘financial‬‬
‫نام جدید‬
‫نام قدیم بانک‬
‫‪Exec sp_rename‬‬
sp_xml_removedocument
Removes the internal representation of the XML document specified by
the document handle and invalidates the document handle.
‫ از حافظه و آزاد سازی آن‬XML ‫حذف اسناد‬
Note A parsed document is stored in the internal cache of
Microsoft® SQL Server™ 2000. The MSXML parser uses
one-eighth the total memory available for SQL Server. To
avoid running out of memory, run sp_xml_removedocument
to free up the memory.
‫ زبان نشانه گزاری‬Extanded markup langage:XML
‫توسعه یافته که برای ارسال داده در قالب خاص به صفحات وب و پایگاه داده‬
.‫است‬
‫ در حافظه کش داخلی می تواند قرار‬xml ‫ عدد فایل‬8 ‫ به تعداد‬sqlserver ‫در‬
.‫ را حذف و حافظه کش را خالی می کند‬xml ‫ فوق این‬sp ‫بگیرد و‬
hdoc
Is the handle to the newly created document. An invalid handle returns an error.
hdoc is an integer.
Return Code Values
0 (success) or >0 (failure)
:hdoc
‫ بدست می آید و در این به عنوان‬xml ‫ است که موقع ایجاد اسناد‬integer ‫یک عدد‬
‫ جهت حذف سند مشخص به کار می رود و اگر اشتباه باشد یک مقدار‬handel ‫یک‬
.‫خطا برگشت می دهد‬
This example removes the internal representation of an XML document. The
handle to the document is provided as input.
EXEC sp_xml_removedocument @hdoc
‫ خاص از حافظه به کار می رود و‬xml ‫ به عنوان ورودی جهت حذف‬hdoc‫پارامتر‬
.‫ یک عدد صحیح است‬handel
‫‪sp_addrole‬‬
‫‪Creates a new Microsoft® SQL Server™ role in the current database.‬‬
‫ایجاد یا تعریف یک نقش جدید به بانک جاری(نقش یک نوع مجوز جدید) یا‬
‫بهتر بگوییم بانک قابلیت چندین نقش را داشته باشد وبا هر نقش کار خاصی‬
‫را انجام دهد‪.‬‬
‫‪Syntax‬‬
‫'‪sp_addrole [ @rolename = ] 'role‬‬
‫] '‪[ , [ @ownername = ] 'owner‬‬
‫این نام جدید با از نقش های موجود ‪ sysname‬باشد‪،‬با پیش فرض و از شناسه‬
‫هایی که قبال برای ‪ db‬دادیم و موجود دارد نباشد‪.‬‬
‫کاربر جدید یا همان نقش جدید بانک از ‪ sysnsme‬با پیش فرض های ‪ dbo‬است‬
‫البته ویندوز مشخصه های شناخته شده را به کاربر می دهد‪.‬‬
SQL Server roles can contain from 1 to 128 characters, including letters, symbols,
and numbers. However, roles cannot:
Contain a backslash character (\).
Be NULL, or an empty string ('').
‫ کارکتراستفاده می کند‬1-128 ‫ از‬sql ‫شماره گزاری‬،)‫ (سمبل ها‬symbols ‫برای‬
.‫ (\) و (") نباید در نقش گزاری استفاده کرد‬backslash ‫ولی عالمت‬
Examples
This example adds the new role called Managers to the current database.
EXEC sp_addrole 'Managers'
‫‘ است این نقش جدید قابلیت‬manger’ ‫افزودن نقش جدید پایگاه جاری به نام‬
‫ شناخته شده است ونوشتن‬dbo ‫ و‬sysname ‫ در‬sql ‫مدیریت دارد و قبال توسط‬
‫ برگشت می دهد پس نقش جدید بانک‬1 ‫ مقدار‬sp ‫خواص نامعقول عدم اجرای‬
.‫ (مدیریت) است‬manger ‫قابلیت‬
‫‪sp_delete_job‬‬
‫هدف ‪ sp‬حذف یک کاال یا شی با اخذ شناسه یا نام شی‬
‫‪Deletes a job.‬‬
‫یک شناسه عددی =‪Job_id‬‬
‫پارامتر های ارسالی توسط کاربر‪:‬‬
‫اسم کاال یا شی‬
‫=‪Job_name‬‬
‫تعیین موقیت سرور =‪originating_server‬‬
‫پارمتر های ارسالی ‪ job-id‬باید منحصر به فرد تعریف شده باشد و پیش‬
‫فرض ‪ null‬است برای نام یک مقدار رشته ای ‪sysname‬‬
‫است و ممکن است ‪ null‬باشد‪.‬‬
:‫عملیات حذف باید توسط خود مالک در حالت‬
‫ مالک‬Owns
.‫صورت گیرد‬
‫مدیر سیستم‬Sysadmin
Examples
This example deletes the job Nightly Backups.
USE msdb
EXEC sp_delete_job @job_name = 'Nightly Backups'
.‫ جاری است‬msdb ‫حذف کن پشتیبان گیری شبانه که در‬
sp_OACreate
Creates an instance of the OLE object on an instance of Microsoft® SQL Server™.
Syntax
sp_OACreate progid, | clsid,
objecttoken OUTPUT
[ , context ]
Arguments
progid
Is the programmatic identifier (ProgID) of the OLE object to create. This character
string describes the class of the OLE object and has the form:
'OLEComponent.Object'
OLEComponent is the component name of the OLE Automation server, and Object
is the name of the OLE object. The specified OLE object must be valid and must
support the IDispatch interface.
For example, SQLDMO.SQLServer is the ProgID of the SQL-DMO SQLServer
object. SQL-DMO has a component name of SQLDMO, the SQLServer object is
valid, and (like all SQL-DMO objects) the SQLServer object supports IDispatch.
‫ایجاد یک شی ‪ ole‬در ‪ sql‬سرور‬
‫پارامترها‪:‬‬
‫‪Prog id‬‬
‫یک شناسه ‪ prog id‬از شی ‪ ole‬ایجاد می کند که توصیف از کالس شی است‪.‬‬
‫شی ایجاد شده باید با رابطه ‪ IDispatch‬مربوط به ‪ sql‬مطابقت داشته باشد و‬
‫پشتیبانی گردد البته برای مثال ‪ IDispatch‬یک شی پشتیبان شده توسط ‪sql‬‬
‫‪ server‬است و مشابه آن ‪ sql-DMO‬از ‪ sql server‬است یعنی باید شی و کالس‬
‫آن توسط ‪ sql server‬پشتیبانی گردد که در ‪ prog id‬مشخص می شود‪.‬‬
Specifies the execution context in which the newly created OLE object runs. If
specified, this value must be one of the following:
1 = In-process (.dll) OLE server only
4 = Local (.exe) OLE server only
5 = Both in-process and local OLE server allowed
:ole ‫تعیین چهار چوب اجرا‬
‫ نام دلخواه و فقط سرور قابل استفاده‬.dll ‫ فقط در رویه ایجاد شده در فایل‬1
.‫است‬
‫ به صورت فایل اجرایی در رویه های محلی قابل استفاده است‬4
‫ قابل‬exe ‫ ویا سرور با فایل‬dll ‫ در هر دو فرایند اعم از محلی با فایل های‬5
‫استفاده خواهد بود‬
This example creates a SQL-DMO SQLServer object by using its ProgID.
DECLARE @object intDECLARE @hr intDECLARE @src varchar(255), @desc
varchar(255)EXEC @hr = sp_OACreate 'SQLDMO.SQLServer', @object OUTIF
@hr <> 0BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT SELECT
hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURNEND
‫مثال باال ایجاد یک شی‬
‫ درست خواهند شود واشیا در کالس‬exe ‫ یا‬dll ‫ها به صورت فایل های‬Ole
)‫ است‬C# ‫های خود قابل استفاده هستند (بحث کالس و شی مشابه‬
Download