Разделы
Публикации
Популярные
Новые
|
Главная » Оптимизация производительности transact 1 ... 43 44 45 46 47 48 49 ... 55 iiXLC msGP .sp add jotschcpGis gjcb /ia;rie = la-.yHdcK.ip, jrane = ScneduledBacKup. !?f!eq tyDe = 4, -- ежедневно (afreq interval I. Pact;ve 5tart t;me - I016C0 PIlCI.AkF Dataoaseb CURSGR FOR SflFC САГА1СС МАН£ FROM INfORMATlOMJCHEMA.SCHEMAA WHERE CAEALOG NAHE <> te.Tiodb мрипускае, сясгемнь.е базы ORDER BY CATALOG NAME OPEN Catebases FEICH Datauases INIO Pabname SET gste? id-C WHILE (casaEETCHJTATUS-O) BEGIN IF NOT EX1STS(SELECT * FROM Mbter. . iysdevices WHERF name Pdbname+back) BEGIN -- Создать ycipoHCiBD резервного копирования PRINT Adding the data backup device for +@dbname SET C<iexecstr=EXEC sp addumpGevice disk . +iSdbna,t,e+bacK < , @roctpath+ \backup\ +PdbnaiTie+back .dmp EXECCPexecstr) - Добавить эта,; задачи резервного копирования PRINT Adding the database backup job step for +gdbncime SET gexecstr=EXEC msdb. .sp addJob5tep @job name = DailyBackup, &step name + Backup of database: +@dbname+ . (asubsyste.m TSQL . (5corTi,Ticrd = BACKUP DATABASE tiadbname TO 4adbname+back . @on success action=3 EXECdSexecstr) SET @steD io=?step idi-I -- Добавить этап для копирования журнапа IF ((adbnameo master) AND (OATABASEPROFERTfiPdbname. IsiruncLog)0j BEGIN IF NOT EXISTS(SELECT * FROM master..sysdevices WHERE name = (adbname+back) BEGIN -- Создать ycTpoiiCTBO резервного копирования журнала PRINT Adding the log backup device for +&dbr,ame SET @execstr=EXEC sp addumpdevice disk . +gdbnaine+logback + . +(arootpa th \bdckup\ +@dbname+ 1 ogback. dmp tXEC(@execstr) PRINT Adding the log backup job step for +C=dbname SET gexecstr=EXEC msdb .sp addjobstep @job name = DailyBackup !Sstep name - + Backuo of log for database: +@dDnanie+ . subsystem = TSQL . gcommand =- BACKUP LOG №name+ TO +@dbname+]ogbaCK . (5on success action=3 EXECfPexecstr) SET (astep id=@step id+I 470 Глава 17, Административный Trar inCh DaLacases INTO gaonarK ClOSI DaiaDases DEALLOCATE DataDases HacTpciTb Г1сследн;1й этап дпя завершения вь;По,;не.-!ия задачи EXEC nscb. .sD upc;ate jobstep Ojob nanie=Da :iyBackup, 9step id4 step ic, Oon success actionl -- Связаь задачу с сервером задач EXEC msCD.. sp ada jobserver @job naTie=DailyBackup PRINT CHARCOi+Successfully iniLialized server (результаты сокращены) Setting template database options Checkpointing database that vjas changed. DBCC execution completed. If DBCC printed error messages, contact your system administrator. Checkpointing database that was changed, DBCC execution completed. If DBCC printed error messages, contact your system administrator. Checkpointing database that uas changed. DBCC execution completed. If DBCC printed error messages, contact your system administrator. Checkpointing database that vjas changed. DBCC execution completed. If DBCC printed error messages, contact your system administrator. Adding template data types Type has been dropped. Type added. Creating backup devices and job steps for every database except tempdb Setting up the job operator Adding the backup job Scheduling the job Adding the database backup job step for CM Adding the log backup job step for CM Adding the database backup job step for master Айа::-5 1;;с Ccracase idc-.jj joo s:ei; с -уса] Aaaing the aatahase oackup joP step for msJo ACG-ng tne catahase hac:<;c job stec or Norfi.-rnc Adding the dataoase bac-vip job step fcr Mc-twi. o2 Adding tne database backup job step *0- p-\ Adding the database bdc-,p job step for PO Adding tne database Ьзскпр job step rc pubs Aacng the database backup job step for VCDE Successfully initialized sc-ver Этот сценарии выпол1И1ет несколько интересных онерации. Сначала он конфигурирует ба.чу данных model нуте.м онисания 1иаблонного набора параметров и типов данных. В дальнейшем эти пара.метры исиолызуются при создании новых баз данных. Они также применяются при nepecrpoiiKe базы tempdb каждый раз, когда сервер иерезапускается. Напри.мер, можно включить настройку select into/bulk copy в базе model, если вы хотите включить се в базе tempdb при запуске сервера. В .месте с те.м специальпая процедура автозапуска предпочтительнее, поскольку оиа устраняет риск случайного включения настройки select /into bulk copy в других, вновь со.здавае.мых базах данных. Зате.м сценарий испочьзует 1цл)цедуру sp getSQLregistry для поиска каталога установки SQL Server и при необходи.мости создает устройства резервного копирования. Далее создается задача службы SQL Server Agent для резервного ко-нировання каждоГ! базы данных (и, если иужио, ее журнала транзакций), а также соответствующий оператор и расинсаиие, по которому задача запускается. Каждая задача службы SQL Server Agent сосгоит из этапов. ПростейшсШ 311дача может содержать всего один этан, в более сложных задачах их .vnroro. В данном примере создаем отдельный этап для резервного копирования каждой базы и каждого журнала транзакцпГг В качестве значения ио умолчанию пара.метра on success action выводится .3, что является ука.заиие.м службе SQL Server Agent перейти к вьпюлнен1по следующего этана, если текуиий! этап завершен успешно. Для заключительного этапа гадачи этого пе делается, поскольку следующи!! этап отсутствует. Поэтому сценарий! включает вызо!) процедуры sp updateJobstep, которая предписывает заключ!!тельнол!у эта!!у просто за!!ер!11!!ть работу з;шач!!, если са.м этап успешно завер!де!!. Обратите вн!!.\!ан!!е !!а вызов !!ро!!едурь! sp addJobserver. Она связывает В!!овь создаину!о задачу с локаль!!Ь!.м серверо.ч! задач. Есл!1 этого не г!роизо1 !дет, задача 1!!!Когда !!е запуст!1тся. МоЖ!!0 пред!1олож!1гь, что !!ростое создан!!е задач!! с !!0.\!ощью процедурь! sp addJob долж!!0 уста!!ав.т!!вать эту связь, однако это !!е так. Гибкость С1!сте.\!Ы, заключаю!цаяся в разделен!!!! задач !f серверов задач, позволяет !!ла!!!!ровагь запуск задач !!а дру!Т!х серверах - такая воз.\!ож!!ость че-резвь!ча1и!0 важ!!а для aд^!и^!!!cтpaтopoв, зан!!.У!а!0Щ!!Хся поддержкой М!!ого-серверн1>!х С1!стем. Тем не ,\!е!гее за П!бкость !!р1!Ход!1тся !!латить - следует 472 Глава 17, Административный Transact-SQL и(),\птть о пе()0,\()Дпмо(ти связьпшть задачи с cejinejia.Mn задач, когда вы планируете задачи с homouujK) Transact-SQL, Это лншнн11 apry,\iejrr в но.тьзу применения гра(1)ическнх средств ад\пнп!Стри1К)вання: если вв! используете Enterprise Manager для плапнроватшя задач, нам не нужно беспокоиться о подобиьгх дета-.тя.\ - по умолчанию он платтрует задачи на лока;И)но,\1 сервере. Процедура sp readtextfile Текстовые tj)aib !b! очень широко раснрост1)аиеиы в снсте,\и1(),м ад.чпинклрнрова-ihhi, и нет ничего удивительного в том, что ад,\ннпи:т1)атора,м часто нужно иметь к ним доступ через SQL Server, Об1)аб()тка результата вьни)лиснпя команд оне-paunoHHoii системы и консольных утилит cejBcpa, разбор протокола оин!бок, загрузка фа1!лов спенариев SQL - вот лишь несколько прн.ме1)ов из .мгюжества CHTyauHii, в которых ад.\пни!СТ1)аторы и.меют дело с текстовы.чш файла.чиь Далее нредсгавлсна ироцелу1)а, которая читает текстошя!! файл и возвращает его в виде набора данных. Используя операто]) INSERT...EXEC, можно поместить возвращае-Mbiii процедурой результат в таблицу для последующе! ! обработки или просто вернуть его в виде собственного набора данных, как это показано в иривод!ь\и)11 процедуре sp generate scripL Расс.\и)три.м исходиьп! код процедуры sp readtextfile: USE master IF OBJECT ]DCsp reac!textfile) !S NOT NULL CROP P.ROC sp .-oac:textfile CREATE PROC sp readtextfi le Ptextilename sysram.e /* Обьект: sp readtextf 1 le Описаняе: Считывает содержимое тексгового файла в набор допных SOL Синтаксис: sc readtextfile (cte,<tiileiame=HM файла Возврашаемое значение: (нет) Автор: Ken Henderson. Email: khenOKhen.ccm Версия: 7.0 Пример использования: sp readLextfile D:\MSSQL7\L0GS\errcrlog Дата создания: 1996-05-01. Дата лсслед.чего изменения: 1999-06-14. / AS SET NOCOUNT ON IF ((5textfilena,Tie=71) GOTO Help CREATE TABLE #lines (line varchar(8000)) EXECCBULK LNSERT #lines FROM +(atextf i lename-t ) SELECT * FROM #lines CROP TABIE #nnes RbfURN О Help; tXEC sp u5age (aobjectrid,Tie=bp reaciit.-xtf iе'. edesc-Reacs the contents к' a text ile mt;; a bC: revjli se;. @paranoters=@textfilenarriename o file to read, 0author=f(en Hendcscn, (3eiT;a;><hen?<hen.co;n. eversion=7 ,(3revision=0, Pdatecreated 19960501, Pdatelastchanced=195906:4, (aexainpie=sp readtextfile D;\MSS0!.7\l.0GS\errorlog RtTUR.N -1 EXEC sp.reedtextflle c;\nssq7\logVerorlog,sav (результаты сокращены) line 1999-07-06 09;10;4i,l kernel Microsoft SQL Server 7.09 - 7,00.699 (Intel XB6j May 21 1999 14;08;18 Copyright (c) 1988-1998 Microsoft Co-poratior Desktop Edition on windows NT 4,0 (Build 1381; Service Pack 4j 1999-07-06 09;10;4l,25 kernel Copyright (C) 1988-1997 Microsoft Corporation, 1999-07-06 09;10;4l,25 kernel Ail rights reserved, 1999-07-06 09;]0;41,25 kerne Logging SOL Server .messages in file d:\MSSQL7\log\ERRORL0G, 1999-07-06 09;10;4I,56 kernel mitconfg; Nunben c* user connections li.iiited to 32767 1999-07-06 09;10;4l,56 Kernel SOl Server is starting at priority class r.ori] (i CPU detected), 1999-07-06 09;10;41,70 kernel User Mode Schedule- configu.-ed fo- thread process ing 1999-07-06 09:10;43,34 server Directory Size; 16215 1999-07-06 09;1C;43,45 spidl Using dynamic lock allocation. 1500] Lock Blocks, [1000] Lock Owner Blocks 1999-07-06 09;10;43,49 spiol Starting up database master. 1999-07-06 09;10;43,49 spidl Opening file d;\MSS0L7\data\master,mdf. 1999-07-06 09;10;43,73 spidl Opening file d;\MSSQL7\dataM]iastlog-lGf, 1999-07-06 C9;10;44.23 spidl Loading SQI Servers Unicode collation, 1999-07-06 09;iO;44,2S spidl Loading SOL Servers non-Unicode sort order and character set, 1999-07-06 09;10;45 36 spidl 107 transactions rolled forward in database master- (1), 1999-07-06 09;10;45,37 spidl 0 transactions rolled back in database master (1), 1999-07-06 09 1999-07-06 09 1999-07-06 09 1999-07-06 09 1999-07-06 09 1999-07-06 09 1999-07-06 09 1999-07-06 09 10;51,28 spidl Recove,7 camplete, 10;51.28 spidl SQL Servers Unicode collation is; 10;51,28 spidi English (ID - 1033), 10;51,2B spidl comparison style = 196609, 10;51,28 spidl SOI Servers non-Unicoce sort order is; 10:51,28 spid) nocase iso (ID =52), 10:51,28 spidl SOI Servers non-Unicode character set is; 10;51.28 spidl iso 1 (ID = 1). Операпии, выполняе.чнле эти'п нроцедуроИ, довол1л-10 очевидны. Сначала она загружает указанный фа1 1л во временную таблицу, используя BULK INSERT. Зате.м выполняет запрос SELECT * к временной таблице для выдачи ее содержимого. Конечный резу.н.тат выно.тнсгтя процеду1)ы - по.тученне к.тпенто.м тскстового (Jraii.ia в виде набора данны.х, возвращаемых серверо.м. ЗАМЕЧАНИЕ -- В ранних версиях SQL Server 7.0 имеется ошибка, исключающая возможность вызова sp readtext из процедур, использующих процедуры OLE-автоматизации (процедуры вида sp OAxxxx). Процедура sp readtext вызывает команду Transact-SQL BULK INSERT для загрузки текстового файла во временную таблицу, содержимое которой затем выдается в виде набора данных. Для выполнения команды BULK INSERT применяется поаавщик OLE, реализованный в модели свободных потоков (free threaded OLE provider). При использовании технологии ODSOLE (процедур вида sp OAxxxx) среда СОМ инициализируется с применением модели изолированных потоков (single-apartment model). Когда команда BULK INSERT вызывается потоком, уже инициализированным в данной модели, возникает конфликт между двумя моделями, который приводит к ошибке при инициализации OLE-DB Stream provider - команда BULK INSERT не может прочитать переданный ей файл операционной системы. Обходной путь для решения этой проблемы требует модификации системного реестра. Чтобы BULK INSERT можно было вызывать в процедурах и сценариях, использующих модель изолированных потоков СОМ, следует выполнить следующие операции: 1. Запустить regedit.exe или regedt32.exe. 2. Найти ключ HKEY CLASSES ROOT\CLSID\{F3A18EEA-D34B-lld2-88D7-00C04F68DC44}\InprocServer32\ThreadingModel. 3. Заменить значение Free на Both. Процедуры создания сценариев Одна из расп1)остранспных задач админпстрированпя - генерация сценариев создания объектов базы данных. Иногда они нужны ад,мнн1и:траторам для создания дополнительных резервных копий, копирования базы данных или отдельного объекта данных лнбо для аигглиза каких-то специфических особенностей определения объекта. Enterprise Manager предлагает весь.ма удобное средство для создания таких сценариев, и для решения подобных задач реко.мепдуется пользоваться п.мен-но и.м. Он осуществляет свои действия с по.мощыо основанной на СОМ технологии SQL-DMO (Distributed Management Objects), которая предоставляет приложения.м интерфейс для управления серверо.м. Поскольку Transact-SQL обеспечивает доступ к серверам СОМ через технологию ODSOLE (процедуры с префнксо.м sp OA), мы може.м обращаться к SQL-DMO прямо из SQL, минуя Enterprise Managetv (подробнее об этой технологии см. главу 19). Рассмотрп.м процедуру, KOTop;u! генерирует сценарии для со;адання объектов непосредственно из Transact-SQL: USE master GO IF DBJtCT ID(sp generate scripf) IS N01 NULL DROP PROC sp generate scnpt CREATE PROC sp generate script Pobjectname sysname-NULL. -- Шаблон имен колируемых обьектов @outputname sysnameNULL. -- Выходной файл (no умолчанию -- (SobjecT.name+ .SOL ) p,j:jlG(ii nt-NCLL, -- 1.сься maci\d нас'рсс-< л/я GCteiia rensfer Определяет, выводит^ сие^ар/й в в1де набора данных Имя сервера Имя пользователя (;:о умолначию saj Psorver sy£riane=doca;, (?1.5егга;де sysnane=sa. i-D3SSwora 5ySRa.iTe=NLLl. -- Пароль Обьект: sp Generate sc,Tpt Описание: Генерирует сценарий создания обьекта или -абэра обьечтов Синтаксис: sp geGecate scr1pt [iacbjectRane= HMfl сбьекта или лаблсн (по у.чол^анию - все обьекты в текущей базе) ] L ,i3ou6Dutnaine= ilMfl выходного файла (по умолнанию JoDjectnaiTe-* ,SQL итти GCNERATfDJC.RIPCSCL для всех обьектов базы)] 1 ,(а5сг1рторТ10п$=биговая маска, указывающая настройки генерации сценария] Г,@resulLset= YES I NO -- Определяет, выводить ли сценарий в виде н'аСора данных (по умолчанию: YES )] [ ,@5егуег= имя сервера ][. @-т5еггта;пе= имя пользователя ][ ,Capassword= пароль ] Возвращаемое значение: (нет) Автор: Кеп hendenson. Email: Knen( Knen.com Версия: 2,0 Дата создания: 1596-12-0;. Дата последнего изменения: 1999-06-06, /* Т|еременчые для хранения копстант SQL-ОМО опущень' для коагкост/. Они включены в версиь исходного кода на компакт-диске / DECLARE ФрЬпате sysnaine, JsqloDject int, -- Содержит указатель на обьек! SQL Senver object int, -- Вспомогательная переменная для доступа к обьек^ам СОН !3hr int, -- Содержит HRESULT. возвращаемый в СОМ @lfobjecl mt -- Содержит указатель на обьект Tnansfer IE (@objectname=/?) GOTO Help SET gresultset=UPPER((anesultset) IE ((aobjectname IS NOT NOLL) AND (CHARINDEX(,@cbjectnarre)-0) AND (CHARINDEX( .(aobjectname)O) BEGIN -- Гюлучить имя базы (по умолчанию - текущая база) SET @dbname=ISNULL(,PARSENAME(@objectname,3),DB NAMEO) SET @objectname=,3ARSENAME(@objectname,l) IE (@objectname IS NULL) BEGIN RAISERROR(Invalid object name,.16,1) RETURN -1 END IE (goutputname IS NULL) SET (?outpjtname=(aobjectname+ .SOL E.ND ELSE BEGIN SET Codbname=DB NAMEO if- (OculoulndiTie IS null; SET gcutputraiTieGEN£R.ATED SCR!,pT.SQL -- Создагь обьект SQLServer EXEC (5nr=sp CACrc-ato SCLDMO.SOLServer, (SsqiObject OUiPUI IE (ghr <> 0) BEGIN EXEC sp displayoaerronnEo bqiobjecl, P-hr RETURN - Создато обьект Transfer EXEC @h.r=sp OACreate SOLDMO.Transfer, etfobject OUrPUT !F (@hr <> 0) BEGIN EXEC sp displayoaerrorinfo latfobject, Phr RETURN -- Установить свойство CopyOata обьекта Transfer EXEC @hr = sp OASetProperty @cfobject. CopyData. 0 IE (@hr <> 0) BEGIN EXEC sp displayoaerronnfo laifobject, @hr REfURN -- Указать обьекту Transfer копировать схему EXEC Phr = sp OASetProperty @tfobject, CopyScherTra . 1 IE mv <> 0) BEGIN EXEC sp d1splayoaerrorinfo @tfobject. @hr RETURN IF ((Pobjectnafne IS NULL) BEGIN -- Полунить все обьекты в базе -- Указать обьекту Transfer колировать все обьекты EXEC C hr = sp QASetProperty @tfobject. CopyAllObjects, 1 IF mv <> 0) BEGIN EXEC sp dTSplayoaerrorinfo (Ptfobject. Ш REIURN -- Указать обьекту Transfer включить труппы EXEC (ahr = sp OASetProperty (atfobject. IncludeGroups. 1 IF (.Chr <> 0) BEGIN EXEC sp displayoaerronnfo Ptfobject. Phr RETURN -- Указать обьекту Transfer включить пользователей EXEC Phr = sp OASetProperty (atfobject, IncludeUsers. 1 IF (@hr <> 0) BEGIN EXEC sp di5playoaerronnfo Ptfobject. Phr RETURN -- Указать обьекту Transfer включить учетные записи EXEC Phr = sp OASetProperty Ptfobject, IncludeLogins. 1 IF (Phr <> 0) BEGIN RETURN -- ВКГЮ11ПЬ Зависимые OGiC-K-!). EXEC й1г sp OASetPrope-ty (JifuCjr.:. Ir.eiuaelbpcrdeix.eb . i IE (C=hr <> G) BEGIN EXEC so dispaycdef,-c-Tifo (ptfopject, 5h!- RETURN IF ((pscriptopt;onb IS NULL; SET ©scnDtcpfOfts- S)L!K)SC! .&! J. nci4,-e-<>- , Й0;Т,мССс- р'. ;е'аа!1, I faSQLD№Scnpt ifg9erb j PSC-lDFlOScr pi Bincl-ngs j C SQLDHOScriptJJataDasePerrriisS;Cr;s PSOFDMOScr;pi, Fecnnssio;;s \ @SQLDM0Script 0DjectPer3iissicns (aSOLaTOScnpi: CTusi.eredlnCexes @SOLBMOScript Inc;exes gS0LD40S::ript Ai lases iaSCLDM.OScript DRi Ai i 1 @S0EDMOScnct IncludeHeaders END ELSE BEGIN DECLARE gobnane sysname, (Pootype vanchan(2), laobcwner sysname, (aOBJECT !YPFS varciiarOO;. Pobcode int -- Используется для преобразования sysobjec.ti. type в биОвуо .чатрииу, требуемую обье-Transеп SET POBJECt TYPES-T V U Р U R -- HaiiT,i все обьекты, соответствус1;.ие tscrci-.y, и помесить / -- в список обьектов. для которых создаемся ;,:е11арий DECLARE CbjectList CURSOR FOR SELECT name.tybe,lJSER NAME(b-d; FROM sysobjects WhERE (name LIKE (aobjectname) AND (CHARINDEX(type+ ,(aOBJECT TYPES;<>C) AND (OBJECTPROPERTYdd, IsSyste.mTabie)-G) AND (status>OT UNION ALL Включить пспьзоватетьские м допмь;/ SELECT name,T,USER NAME(uid) FROM SYSTYPES WHERE (usentype & 2G6)<>C AND (name I IKE (aobjectname) OPEN Object! ist FETCH ObjectList INTO @obname, ( ottype, goDowner wHILt (№FETCn S ATuS 0; BEGIN SET (aobcode=POWER(2, (CHARINDEX(laobtype- ,@CBJECr TYPES)/3)) EXEC @hr = sp OAMethod @tfobject, AcoObjectByNam.e, NULL, gobname, (aobcode, (aobowner IF mr <> C) BEGIN EXEC sp dTSpiayoaerrorinfo @tfobject, (phr RETURN FETCH ObjectList INTO Pobname, (Sobtype. Aobowner END CLOSE ObjectList OhALLCfAiF CbjeclList It- (3scriDtopt1or:s IS .NjlL) -- Если сиенарий создается пе no ьсе/ Сазе, все упрслае-ся SET iascrptoptions=?SOLDMOSc.-;pL De* duU - Установить свойстБО Scriptiype обьек-а Transfer EXEC Phr = sp OASetProperty Ptfobjeci, ScripUype, PscnplopLicns IF (@hr <> 0) BEGIN EXEC sp d;splayoaerrorinfo C-Ifooject.. (=hr RETURN -- 1:одкл,очИ7ься к серверу IF {password IS .NOT NULL) AND (@passworc<> ) EXEC @hr = sp OAMethod @sqio6ject, Connect. NULL, server, (pLiSernatie. gpassword ELSE EXEC (phr = sp OAMethod @sqIobject. Connect. NULL. @server. @username IF (C hr <> 0) BEGIN EXEC sp disp]ayoaerrorTnfo (Ssqiopject. &hr RETURN - Получить указатель на кол,:екцию баз цаьныл обьекта SQLServer EXEC 3hr = sp OAGetPnoperty @sqlobject. Databases. @ooject OUT IF ghr <> 0 BEGIN EXEC sp d1 splayoaernoninfo (Bsqlobject. &nr RETURN -- Получить указатель д.тя требуемой базы данных в копттекции Databases EXEC (ahr = sp OAMethcd laobject, Item. @object OUT. gabname IF @hn <> 0 BEGIN EXEC sp displayoaenrorino Pobject, @hr RETURN PRINT Ignone the coce displayed below. Its a nemnant of the SOL-DHC method used to pnoduce the script file -- Вызвать метод ScriptTransfer обьелта Database для создания сценария EXEC ?hr = sp OAMethod (Sobject. ScriptTransfen.NULL, @tfobject. 2, Cooutputname IF №n <> 0 BEGIN EXEC sp displayodennoninfo laobject. l?hr RETURN EXEC sp OADestroy (Ssqlobject -- Удаление обьекта EXEC sp OADestroy (atfobject -- Удаление обьекта IF (@resultset= YES ) EXEC sp reaatextfile @outputname RETURN 0 Help: 1 ... 43 44 45 46 47 48 49 ... 55 |
© 2004-2024 AVTK.RU. Поддержка сайта: +7 495 7950139 в тональном режиме 271761
Копирование материалов разрешено при условии активной ссылки. |