Разделы
Публикации
Популярные
Новые
Главная » Оптимизация производительности transact

1 ... 41 42 43 44 45 46 47 ... 55

Как и sp dir, процслхра sp...object iirno.ib.ivoT к'нис трхктии'о UNION ALL д.чя объединения объектов. HaiUeiHHJx в таб.иидах sysobjects и systypes. Поскольку она не генерирует итоговые значения. второЛ оператор UNION (испо.чьзоваввипк'я в sp dir исключительно для этой ие.чн) .з.чесь не п>жеи. Аналогично sp dir, эта процедура в процессе вьтолнеиия лтитмически генерирует запрос, когорьи ! зате.м вьиюл-няется. Это позволяет пользователю папр.чмхто >ка.>ыва'ть порядок сорти])овкп в разделе ORDER BY.

Об1)атите вни.\иапие - л.га упротснмя зап1)оса здесь при.меняется ироизвощиш таблица. Она позво.зяет залс11ствовагь (ЮлерАащиеся в ней значения при фор-.\и[ровании BHcnniero заи1)оса. То есть в.место оператора CASF OR]ECTPR.OPERTY(!d, IsTable) во внетнем заЦ)оее .\к)Жно па;и1сать CASE Туре WHEN Table ... . Этот вариант гораздо лучше чггтается и позво.члет в какой-то .мере структурировать код. Обратите также вии.чките на псиользованпе следующего выражения: RTRIM(SLBSTRING{-.\0 YES .((SJtCTrRCPERTu-ld. Тгэ1е-13ьСг|ПйгуКеу }*3)-i.3)) Оно при.меняется л.чя преоб1)а:юваипя 1 тгчи О, возв1)ащаемьгх функцией OBJECTPROPERTY(), в строковые :и1ачеиия <-YES п.чи *Х0 . С точки зрения функциопальносчи данное выражение ;л<внвалеитио следующему: CASE OBJECTPRCPERTV( JsbiёЬьГгьтю.-уКеу. .-.H-N О ЖП 7.0 ELSE Yes E\D

Я выбрсШ этот прие.м, потому что в нсхолпо.м коде процедуры и так уже iCMc-ется множество ири.меров испо.чьзоваипя операто[)а CASE, и было бы неплохо подумать о других способах преобразовапня целочисчепных значепи!! в строковые. Кро.ме чюго. большое число опе1)аторов CASE в запросе .может показаться на первый взгляд чрез.мериы.\г При.мспеипе указанного ф])аг.мепта Н0;\кэгает немного оживить код, нисколько ие зат[)агпвая при :-п-о.м его производительность.

Код, ири.меиениьи! для ])асиозпавания иол1.;юватсльскнх типов данных, также представляет определенны! ! интерес:

(SELECT name+

CASE WHEN name -n (char.varcnar.nchar.nvsrcna ; THEN

(+CAS(TYPEPROPERTv{ObJect, Precis-on) AS vacnar,-)

WHEN name in (f lea:,nu-e-ic,decimai. -ea i,rr.oney, snal iiii.oney) THEN

(+CAST(TYP£PR0PERTY(3bject,P-eci3iGn; AS va-cbarr ..

CAST(1 S.MULL(TYPEPROPERTY(Object, Sea 1 e), 0; AS varchaг) +)

ELSE

FROM systypes WHERE ;type=;a) AND (use-typo S 2bc)=G ANC (nameosysname; AND

prec=(SELECT MAX(P-ec} FROM systypes WHERE type=;C);

Этот подзап])ос оп1теде;1яет oaBOBiiui тип пол1>зовательско1 о ти1!а данных посредство.м поиска в систе.чиюй таблипе systypes .макси.мального базового типа (usertype & 256 = 0), котор1>и ! сотитадает со 31!аче!1ие.\1 поля id, указанного в запросе. Мы ище.м макс1!.маЛ1Л1ое значение базового тппа, так как иаш запрос должен возвращать только одно зиаче!1!1е. В п])1!нцнпе воз.можио существова1П1е нескольких базовых Т1ПК1В с одни.м и те.м же пле!1Тпфнкатором. Для си.мвольных Т1!Пов это всегда и.меет место из-за нал!1Ч1!я их ве1)снн, поддерживающих Unicode. Тот факт, что зап])ос возвращает лпш1> ,\iaiccHN!a.ibiioe значение, означает, что типы псЬаг и nvarchar будут Н1Т10])!!ро1?а1ься, 1!оско.чьку они н.меют меньшую д.1ину (4000 символов 111)отив 8000). че.м пх a!i;viorH, не под/юрж!шлющие Unicode.



Процедуры обслуживания системы

Авто.матпзация поддержки спсте.\пл является, верояттю, са.мькм раепрослрапеп-пы.\1 прп.меисппе.м ал.\п[иист])атпвпого Transact-SQL. Больпптство .тюлей, даже ал.\п[нистраторы, не любят тратить вре.мя па [synivTo настро11ку систе.чп:.!. Вряд ли .\niorne согласятся с утвержлеппе.м Маргерпт- Дк)1)а о то.м, что лучитш! способ провести В1)с,\1я - это потратить его впустую , Бо.тьппшство людей иа.ходпт е.му лучшее прп.мепенпс.

С этой це.тью далее в этой г.таве П1)елстав.1еп обширный выбо[) н1)оцелу1) и сценариев, которые я использова-т в своей работе, чтобы (xxтelnlть себе жизнь - хотя бы в той части, котор;гя связана с снстелнн>1,м ад.\н1Ннсгрнровапие.\1 н a;i.\nnHiCT-ри])овапнем баз данных. Многие из них относятся к то.му типу п1)0цедур, запуск К(ггорь1х можно планировать с помощью службы SQL Server Agent. Большинство из них осуществляют де11ствня, Koropiiie жетательио выполнять регулярно, поэто.му при наличии возлк^жиостн ра.зумно запускать их автоматически но расни-саипю.

Процедура sp update stats all

Незавпси-мо от того, luicTpoen ли SQL Ser\er на авто.матнческое но;щержанпе статистики, используемой для оптн.мизацнп запросов, все-таки случается, что время от вре.мени нужно обновлять эту статистику вручную. Для этого есть две причины. Первая: для минн.хнгзашш вре.менн, затрачнвае.мого на авто.матнческую ге-нерацтно статистики, сервер нрн.меияет тех1К);югию выборок. Случается, что эти выборки пе являются репрезентатнвньь\п[ по от}юшеиню к полно.му набору данных таблицы н мешают оптн.\п1затору вьнюлнять должны.м образо.м опти.\П1за-цню запросов. В этом случае стоит не.хиюго помочь серверу путем создания ста-тнстнки вручную с помощью команд CREATE STATISTICS нлн UPDATE STATISTICS.

Другая причина, которая может вызвать необходимость ручного обновления статисгнки - отоюченпе автоматпческ(л [ генерацнн статнсттпси по соображениям нроизводнтельностн. Когда автогенерация включена, сервер отслеживает н перестраивает статистику ио мере необходимости при опт1ьмнзацнп запросов, которые эту статисг1п<у используют. Этот процесс требует определенного количества ресурсов и процессорного времени. В системах, обрабатывающих большие объ-е.\пл тра}1;!акций, ,\южет оказаться, что более э()фектнвно обновлять статистику вручную один раз в день luin в неделю, чем предоставить серверу 1юдде])живать ее авто.матнчески. П.мюсы и .чигнусы такого подхода сходны с ситуацией, когда перед вами стоит выбор - удсишть ли некластериые индексы перед операциями пакетной обработки данных. Может оказаться, что щш работе с ги1декс}10й статистикой эффективнее следовать известно.му правилу: купи сейчас, заплати позже , чем платить сразу за все

Да-тее приводится храншмая процедура, которая обтювляет статистику для всех таблиц одной или нескольких ука.занных баз данных. Она выполняет анализ агру.ме}1тов и вы.зьшает спстехшую п150цедуру sp updatestats для обновления статистики в каждой базе данных. Расс.мотри.м код этой П]хл1едуры:

USE master

IF OBJECT IDCsp updatestats air) IS NOT NULL DROP PROC sp updatestats all



Ск1АГ; РКОС sp i;pcc;LesLd;.; J I ! ;5.л;г'апщ 5}5Пс ;-% Обие.кг: bD uDGat,ebid! s a

Огисанио: йСпэьляет сга:ис;/ку .;.-ечсо= ,.гг сяпои л~: 1-1еС<оль'. л учазань'вгх баз даннь/

С/.--а-,сис: S3,jpcdlestar.s d)l [Ьгоие-Ии.я ресуемой базы данных ( о усолчачио: % )\

БозБралае ое значе-ие: (неп

АвСр: ((еп незегзос. r.mai:; kc.er.iSkt.eri.corn

Еерс/я: 4,2

Пример ис110)1ьзова.1/1я. ьр ир£;аг8ыа15 а1 ! puDS

flaia созд31,я: 1991 -09- 12, Дата последнего измеюния: 1999-05-03,

*/ AS

SEI NOCCUNi CN

;F ((adDnair,e=/?) GCiC help

DECLARE Daiabasos CURSOR FOR

SELtCT CATALOG name

FRCM infcr,4Ai I0N SCHtMA.SC.4ErWA

WHERE NOT

- Пропус.сем системнее баз ;

(CATAI,OC name in (tempob, niasEer, msdb, TOdel)) ANC CATAlCG NAME like Ccdbnane DECLARE eexecstr va-cha(80C0;

open Databases

FEICH Databases INIO tebname

if (g3FETCH status<>0) begin - [-одходящих баз нет CLOSE Dataoasos CEALLGCATE Databases

print No databases were fouTd that matcb (odbriaine GOTO help

while ;c*fei Ch statuSC) begin

PRINT char( 13;Updating statTsiTcs Trfoniiaticn for deidbase; +?durdnie -- Указание в префиксе имени базы данных меняе! контекст Tenyiieii базы set Pexecstr-EXEC ipcbname-. ,sp updatestats exec(ipexecstr)

FETCH Databases INTO gGbname

Ct,OSE Databases DEALLOCATE Databases RETURN 0

Help;

exec sp usage (aobjectnd[ie=sp updatestats air , (ade5C=Updates index statistics for a given database or databases,

?para,-Tieters=[(?dbname=Name of database to update (Default: V)],



$eutror i(er Hendgr-s,on. fere: bv.-ctix-t.tox . Sversion-M, C<>revis1on=2,

@datecreaLea---199I09i2, (adate!astchanged=;9990503, @example=sp updatestats al pubs RETURN -1

SD updatestats ai (результаты сокращены)

Updating statistics information for database: Ncrtnwinc

Updating dbo.employees

Updating dbo,categories

Updating dbo,customers

Updating dbo.dtpropcrties

Updating dbo,shippers

Updating dbo.suppliers

Updating dbo,orders

Updating dbo,products

Updating dbo.order details

Updating abo.customercustoriierdemo

Updat ing dbo.customerdemograph ics

Updating dbo,region

Updating dbo,territories

Updating dbo,employeeterritories

Statistics for all tables have been updated.

Updating statistics information for database: pubs

Updating dbo,authors

Updating dbcpubl ishers

Updating dbo.titles

Updating dbo.titleautnor

Updating dbo.stores

Updating dbc.sales

Updating dbo.rcysched

Updating dbo,discounts

Updating dbo,jobs

Updating dbo,pub info

Updating dbo,employee

Updating dbo,bets

Updating dbo.testident

Updating dbcdtproperties

Updating dbo.titleauthor2

Updating dbo,authors2

Updating dbo.testtxt

Updating dbo.authors22

Updating dbo,temp authors

Statistics for all tables have been updated.

Данная процедура совсем не сложная. Она открывает курсор по п]зедставле-ннго INFORMATION SCHEMA.SCHEMATA и далее выполняет нгерангт по база.м данных, перечнсленны.м в представлении, вызывая для каждо!! из них процедуру sp updatestats, За.метьте, что запрос мог бы обратиться напря.мую к таблице sysdatabases, но использование представлен1и1 INFORMATION SCHEMA всегда предпочтительнее, если среди них имеется такое, которое вас устраивает.



Сам libiaoii sp updaLestats исии.чь.чуег iqineM. продемоистрироваипый ранее в этой главе н применяемый в других частях oroii кнн! п. Для временного тгзме-пепия контекста базы дп1И1Ых перед itmchcm хранимо!! процедуры указывается !1.мя баз 1)1:

FXEC dDrcii.G .sp jpc-jt,c-:Ti£

Это обеспечивает запуск ирокедуры в контексте базв! дашнлх dbname, как если бы непосредственно перед оие[)атор()М EXEC в1,131Л1!а.чся оне1)атор USE dbname.

Процедура sp updateusage all

Подобно П1)оиелуре sp updatestats all. и1)оцслура sp updateusage all 1Ш1полияет ц!1кл по списку 6a;j данных -leKymeio серве[)а лля обнов.чения системной информации. Процедура выполняет ко.манду DBCC UPDATEUSAGE() д.чя исправления ошибок в таблице sysindexes, к(ячтрые .mctivt 1И)Гтвать iiero4fiocTH в раз.мерах объектов, возвращаемых таки.\И1 ироцедурамн, как sp spaceused и sp dir. Вот ее код: USE master

IF OBJECT IDCsp updateuscgeji:. IS \CT NULL DROP PROC sp updateuS6ge al;

CREATE PROC sp upcateusage al dbname syST,anie= /*

Обьект: sp updateusage ali

Описание: исправляет сшибч:! з сб/ице sysicde.es

Синтаксис: sp LipdateusaQe dr, [OdDriaiTe=it4fl [ребуемсй базч ла.-пых (по уиолчапию: % )]

Возвращаемое значение, {нет;

Автор: Кеп Henderson, Email: knenPkb.en.cc:i

Версия: 4 2

Пример испсьзования: so upCdteJSage c i i puos

Дата создания: 1991-09-12. Дата прсле.-п'ег:; .итчене--ия: 1909-05 03

*/ AS

SET NOCOUNT ON

IF ((adbname=7?) G0 0 Help DECLARE Databases CURSOR ECR SELECT CATALOGJIAME FROM INFORHATION SCHEMA.SCHE.MAIA -- И,-норировать системные сазы

WHERE NO {CArALOG NAME IN (tempdb.mastermscbУ'model)}

AND CATALOG NAME LIKE edbna.me DECLARE (aexecstr va-cnarOOOO) OPEN Databases

FETCH Databases INTO &dbname

IF ((a(aFETCH STATUS<>0) BEGIN -- По,-.ходящих Саз -e.-

CLOSE Databases

DEALLOCATE Data.bases



?Ri\ No ddibcses were fuunc tnct riatc;; -ydcdne G0 0 Hep

лН;ЕЕ (ipl-ETCH STA!US 0) BEGIN PRINT C,4AR(i3)-

Upcatuig sysirce,<es usage п'огтаГ'О!: tf database- -(ссЬп.лпо SE @ех сз:г=0еСС U-DATEUSAGE;-Jcbremo*) л1ТН CCUN RO.-;S. NC l,NrCt-iSGS EXEC(@oxecstr)

FETCH Databases INTO gdbrame

CLOSE Databases DEALLOCATE Databases RETURN 0

Help:

EXEC sp u5age (3objectnaiTie=sp updateusage ai . gdesc Corrects usage errors 1,r sysindexes.

Eiparaiteters=[{3dbname=Ncine oF database to upcate {Default: i )]. (aauthor=Ken Henderson, @ema1l = khenLa<hen.coii!. Pversicn=4, @revision=2.

@datecre3ted= 19910912, @dateiastchar.ged-19990503, @example=sp updateusage a]l pubs RETURN -1

Если в таблице sysindexes не пайденг) ошибок, DBCC UPDATEUSAGE() ие выдает никаких результатов, поэто.му при выполнетши процедуры чаще всего вы ие увидите ничего, кро.ме сообщения Updating sysindexes information for database... , генерируемого п[юцедур05[ для какдо;; базы данных. Кро.ме того, при вызове DBCC UPDATEUSAGEO .может потребоваться значительное время для обработки больших таблиц. Поэто.му запускать процедуру sp updateusage aii следует с осторожностью н желательно в те периоды, когда загруженность chctcmii низкая.

Процедура sp rebuildindexes all

Бывают сптуацни, когда требуется перестроить isce индексы данно11 табл1Щы или нескольких таблиц. Пакетна>1 заг[)узка данных, ночнтя пе])есылка инфор.мацни н д])уп1е действия, связанные с обновлением больших o6i>eNK)b данных, - вот ири-.меры операций, вызывающие пеобходн.мость nepecrpoiiKn тгдексов. П])ииеден-н;ш ниже процедура использует команду DBCC DBREINDEX() для перестройки индексов всех таблиц в указанной базе данных. Перестройка индексов таким путе.м позволяет иерестра!шать индексы, связанные с ограничениями PRIMARY KEY и UNIQUE, без необходимости пересоздавать эти ограничения вручную. Она также щ)зволяет нерестранвать тщексы таб.тицы, не имея нт<акой ипформацнн о са.\юй таблице.

Поскольку ко.манда DBCC DBREINDEX() .может перестраивать все гп1дексы таблицы в одно.м вызове, она является атомарной операцией. Это значит, что в результате ее выполнения либо все индексы будут обновлены, либо не будет обновлен ИИ один из них. Чтобы добиться того же эффекта с родственны.\т командами DROP INDEX и CREATE INDEX, их нужно было бы явно по.местнть внут])ь транзакции. Кро.ме того, серверу легче онтихшзнровагь ко.манду DBCC DBREINDEX(), че.м запрос, содержащтн! ан;июгичные команды DROP и CREATE INDEX. Рассмотрим исходный код процедуры sp rebuildindexes all;



uS- -Tiaste-

If GBJ:C ;u: 5p reuu g mcje.es a 11; 15 DROP PRCC sp reDji idindexes al 1

IF CEjFC ID7sc -ebuila:rGCes) IS ROi DROP PROC sp r-ebu П g : Gcexes

CRtATE PROC ,sp reDu1 iGir.ceAcS (PiaDler axt- syscaWS AS

SET NCCOUNi ON

DECLARE eexerstr- varctdTeOulJ, OECEARI Tables CURSOR FOR SELECT narr.e FROM sysobjects

-- Исключить преде.аб1;ен.1я и систе.чмые :а6лии!>

WHERE OBJLC!PRCPERTY;OBJECT ID(name).IsUserTdDiej-l

AND name LIKE Ptabiename OPEN Tables

FEICH Tables INTO (atablename WHILE ((a(aFETCH STATUS=0) BEGIN

PRINT CHAR;:3)+Rebuilding indexes for: 4otablera,iie

SET (aexecstr=DBCC DBREINDEX( !ataЫeпame+)

EXEC((aexecstr)

FETCH Tables INTO gtabiename

CLOSE Tables DEALLOCATE Tables RETURN 0 GC

CREATE PRCC sp rcbui IdinGexes al 1 Cdbname sysnameT /*

СЬьект: SD rebuilandexes al1

Списание: Пересгсаиваег индексь во всех таблицах одной или нескольких указаннь!х баз данных

Синтаксис: 5р геЬитldindexes al 1 [?dbnaine=HMfl базы дачных (по умолчанию: Г')]

Возвращаемое значение: (нет)

Авгср: Кеп Henderson. ЕглаИ: khen@Khen.caii

Версия: 4.2

Пример ис;;ользова.1ия: зр геЬ,лId:ndexes al 1 pjbs

Дата создания: 1991-09-12. Дата последнею изменения: 1999-05-03.

SET hOCOUNI ON IF (@dbname=/?) GO IС Hep DECLARE Databases CURSOR FOR SELECT CATALOG NAME



FROM 1 NrORMAT 1CN SCH[ MA. SCiFMA !A

WHERE NOT (CAALOG NAME IN (lempdb.aiast.msdc,mode;; --Пропускаем системные базы AND CArALOG NAME LIKE (adbnanie DECLARE Oexc-cstr varcnar(80C0,i, feLabiename sysnane

OPEN Databases

FEICH Databases INIO Ipdbndme

IF ((a@F£TCH STATUS<>C) BEGIN -- Подходящих баз nei

CLOSE Databases

DEALLOCATE Databases

PRINT No databases were found tnat matcn -OdbriaiKi- GOTO Help

WHILF ((apFETCH SlAiUS=C) BEGIN

PRINT CHAR(]3;+Rebuilding indexes in database: -gdbname PRINT CHAR(13)

-- Указание в префиксе имени базы даниых меняет контекст текущее! базы

SET (aexecstr=EXEC +(adbnaiiiei-. .sp rebuild1ndexes

EXEC(@execstr)

FETCH Databases INTO Mbname

CLOSE Databases DEALLOCATE Databases RETURN 0

Help;

EXEC sp usage (aobjectname=sp rebuildindexes aU .

(adesc=Rebuilds the indexes for all tables in a given aatabase or databases. @parameters=[(adbname=Name of database to update (Default. % !]. @author=Ken Henderson. e.Tiail-khengkhen.com. @version=4. (3revision=2.

Watecreated 19910912. Xdatelastchanged=19990503. gexample=sp rebu П d i ndexes a11 pubs RETURN -1

sp rebuildindexes al1 (результаты сокращены)

Rebuilding indexes for: authors Index (ID 1) is being rebuilt. Index (ID = 2) is being rebuilt.

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Rebuilding indexes for: jobs Index (ID = 1) is being rebuilt,

DBCC execution completed. If DBCC printed error messages, contact your system administrator,

febuilding indexes for: publishers Index (ID = I) is being rebuilt,

DBCC execution completed. If DBCC printed error messages, contact your system administrator.



Rebuilding irdexes ion; royscnec Index (ID = 2) is being rebUlt.

DBCC execution completed, If DBCC p-inted е'тог messages, contact your system administnator.

Rebuilding indexes for: sales Index (10 = 1) is being rebuilt. Index (ID = 2) IS being rebuilt. Incex (1С = 3) ;s being rebuilt,

DBCC execution completed. If DBCC orinted error niessages, contact your system administnator.

Rebuilding indexes for: stores Index (ID = 1) IS being rebuilt.

DBCC execution completed. If DECC prnittd error messages, contact your system administnaton.

Rebuilding indexes fon: titleautnor Index (ID = I) is being nebuilt. Index (ID - 2) is being nebuilt. Index (ID = 3) is being nebuilt.

DBCC execution completed. If DBCC printed error messages, contact your system administnaton.

Rebuilding indexes for: tites Index (ID = 1) IS being rebuilt. Index (ID = 2) is being rebuilt. Index (ID = 3) is being nebuilt

DBCC execution completed. If DBCC printed error message;, contact youn system administrator.

Обратите виимаиие иа исио.ть.зоваиие процедуры sp rebuildindexes для вызова DBCC DBREINDEX(). Для чего это нужно? Поче.му бы попросту ие вызвать DBCC DBREINDEXO из осиовной процедуры? Заче.м нужна втора>1 процедура? Процедура sp rebuiidindexes нужна для вре.монюго из.менения контекста б^тзы данных с тем, чтобы код Transact-SQL, выпо.пииоици! переиндексацию, запуска^юя в требуе-1\юй базе. Вставка префикса с именем базы данных в вызов системной процедуры (систе.\И1ые процедуры иометцаются в базе master, и !!Х и'.меиа ь'ачтишются с sp ) изменяет контекст базы данных на время выполнения ироцедуры, при этом в префиксе .можно указать имя любо/: базы. Это равносильно вызову оператора USE dbname иепосредствеино перед вызовом ироцедуры и возвращетиио в первоначальную базу данных сра,зу после вызова процедуры.

Процедура sp clbbackup

В Enterprise Manager предусмотрена удобная технология илаиирования создания резервных копий и управления ikmh. Хотя заплаитфоваииые задачи можно запускать и самостоятельно, в обычных условиях для выполнения резервного копирования следует пользоваться имеипо это1! техтюлогией.

Тем не менее иногда .могут возникать ситуации, когда иужио осуществлять резервное копирование с ио.мощью Transact-SQL. Например, люжет потребоваться выполнить какой-либо код иепосредствеино перед резервным копнрова-ние.м либо создать резервные копии па другом носителе или с другими парамет-ра.ми. Может возникнуть и какая-то иная причина, вынуждающая создавать



рсзервшле копии таки.м ооразо.м - оывасг .\ик)го curyaunii, в которых зго .может случиться. Рассмотрп.м П])опед\ру. авто.матплпрующую задачу резервного копи-ропатшя всех баз лаштых иа сервере:

USE master GO

IF CBJECI IDCsp cSbciCkjp; !S NOi NOIL DROP PROC spjbbackup

CREATE P.ROC sp dbb3ckup gdoraire sysnair.e=T ,

(server sysndie=(loca-J. Фи5егпаые sysnameNL! L. C=pass,vord sysrare-

ОЬьекг: sp cbbackup

Ог/сание: Бьтюлняе' резервг-ое копировои.е од-.о; или нсскольг.и/ баз данньх. создсвая пр?; необходиисс'и устрс/.ства дл.я резервного копирования

Синтаксис; sp dDDdckup [dbnameHca или шаблон имени базо! дапнь'л (по умолчанию; %)],

[,(г5егуег= имя cep8epa J[, [ои5егпате= имя пользоватоля ][, (3pas5worc= napori. ]

Возврашаемое значение; (нет)

Автор; Ken Hendersor. Email; khen!3k.nen.com

Версия; 7.GI

Пример использовар(ия; sp Gbbackup m -- Выпо.лпяет резерв-.ое копировапие всех баз данных, имена которых начинаются с т'

Дата создания; 1990-01-07, Дата последнею /зменения; 1999-0/-03,

SET NOCOUNT ON

IF ((adbnarTie=/?) GOTO Help

IF ((Busername IS NULL) SET (!iusername=SUSER SNAME()

-- Создать устройства для резервного копирования и резервные копии всех баз -- (кроме tempdo)

DECLARE (Prootpath sysname, (Paevname sysname, (?execstr varchar(800G), (Plogm.essage

varcharfSOOO) -- Получить корневой каталог установки SQL Server

1Ш sp getSOLregistry (?regkey-SOLRootPatn. iSregva; je=0rootpath OUTPUT, (3server=(2server,

(ausername=?username. (apas5word=(apassword

DECLARE Databases CURSOR FOR SELECT CATALOG NAME FROM INFORMATION SCHEMA,SCHEMATA

WHERE CATALOG NA,ME <> tempdb -- He включать системные базы AND CATALOG NAME LIKE (Pdbname ORDER BY CATALOGJAME

OPEN Databases



1 ... 41 42 43 44 45 46 47 ... 55
© 2004-2025 AVTK.RU. Поддержка сайта: +7 495 7950139 в тональном режиме 271761
Копирование материалов разрешено при условии активной ссылки.
Яндекс.Метрика