??? SQL Server Ad-Hoc ???????? ?? ??????????? ?? ???????? ?? ?????? ???? ????

???? ?????? ???? ??????
???? ID: 243588 - ?? ???????? ?? ?????? ??? ?? ?? ???? ???? ???? ??.
??? ?? ??????? ???? | ??? ?? ??????? ????

?? ????? ??

??????

?? ???? ????? ???? ?? ?? Microsoft SQL Server ??? ???? ???????? ??-??? ???????? ?? ???? ??????????? ?? ???????? ?? ?????? ???? ????? ??? ?? ???? ?????? ?? precise ????? ????????? ???? ??, ????? ???? ?? Microsoft ???????? ??? ????? ???? ?? ???? ???? ?????:
224587SQL ????? ?? ??? ????????? ???????? ???????? ?? ?????? ???? ????

?? ???? ????? ?? ?? ?? ?? ?????? ?? ????? ??? ????? ???? ?? ??? KB 224587 ????? ???? ???? ?? ?? ?? ?? ?? Windows NT ???????? ?????? ??? ?????? ???? ??? ?? ?? SQL Profiler ????? ????? ?? ??????? ??????, ?????, ?? ???? ??????

???????? ???????? ?? ?????????

???????? ?????? ?? ????? ????????? ??:
  • ?????????? ???? ???? ???? ??? ?? ???? ??-??? ???????? ?????? ???? ????? ?????? ??????????? ??? ?? ?? ???? ???????? ???????????? ?? ?????? ??? ?????? ??????
  • ???? ???? ?? 100 ??????? CPU ??????
  • ??? ??????? ???????? ??????? ?? ???? ??????????? ?? ??????

    ?? ?? ???? ??? ??????? ?? ????? ?? ??? ???? ???? ?? ????? ?? ??? ??BLK????? ?? ??????sp_who?????? ????????? ???????? ??? ???BLK????? ?????? ????????? IDs (SPID) ?? ??? ?????? ?? ??? ????? ???? ??, ?? ????? ?? ???? ??? ???
  • ??? ????????? ??? ????? ?????? stressed ??, ?? ???? ????? ?????? ?? ???? ?????? ??????? ?? ???? ??:
    ??????: 701, Severity: 17, ??????: 1
    ?? ?????? ?? ????? ?? ??? ????????? ?????? ?????? ???
    -??-
    ????? 8645, ???? 17, ?????? 1, ?????????, ?????? 1
    ?????? ?? ????????? ???? ?? ??? ?????? ?????? ?? ??? ????????? ?? ??? ?? ??? ???? ??? ????? ?? ?? ??? ?????? ??? ?? ??????

?????? compilations ??? ?????

?????? ??????????? SQL Server 7.0, ????? ??? ?? ?????? ???????????, ??? ??????? ???? ??? ????? ?? ???? ?? ?????? ?????? ????? ??? ??? ???? ?? SQL ????? ?? ????? ????????? ??? ????? ??????????? ?? ????? ?? ???? ??? ????? ??? ??, SQL Server 7.0 CPU ?? ?????? ????? ??? ?? ?? ?????? ?? ?????? ?? ???? ??, ????? SQL ????? ?? ????? ??????? IO ????? ?????????? ????? ???? ?? ???????? ???? ?? ??? ?? ???? traced ?? ?? ???? ???:
  • ??? ?? ???? joins
  • ?????? compilation ???
SQL ????? ?? ????? ????????? ?? joins ???? ?? ??? ??????? ??? ?????????????? ?? ???? ??? relied. ??????? ??? joins inherently IO ????? ?? ?????? SQL Server 7.0 ?? ??? ??????? ?? ??? ??, joins ??? ?? ???? ??? ?? ????????? ??? ?? ???? joins ???? ?? ???? ???-?????? ??????? ??? joins ?? ?????? ???? ??????? outcome ?? ?? ?? ?? CPU ?? ?????? ????? ???? ?? ?? ?? ????? ??????? ?? ????? ???? ???? ??? ??? ?? ???? joins ?? ???? ??? ???? ??????? ?? ??? SQL Server 7.0 ???????? ?????? ??? "????? ??? Joins" ?? "????? ???? Joins" ???? ?? ??????

?????? compilation ??? ???????? ??? ??? ??????? ?????? ??????????? ???? ?????? ?? ??????? ?????? ?? SQL ?????, ?? ??? ?? ???? ????? ???????, ?????????? ?? ????? ???, ?? ????? ??????? ?? ????? ????????? ??? ??? ???????? ??????? ?? ?????? ???? ??????? ???? ?? ??? ???? ???? ?????? ?? ??? ???? ?? ??? ?????? ??????????? ?? ?????? ???? ??? ???????, ???????? ?? ?? ?? ??????? ?? ??????? ?? ??? consideration ?????? ?????? ?? ??? ??? ?? ???? ??? CPU ????? ?????? compilation ??? ?? ???? SQL ????? ?? ????? ????????? ??? ?? ?????? ?? ???? ???

??????? ???????? ?? ??? compile ??? ??? ?? ?????? ?? ???????? ???? ?? ??? ??? ??? ???? ?????? ??? ????? ?????? ?? ?? ?????? ???? ?? ??? ?? SQL ????? ?? ????? ???????? ???????, ?? ????? ?? ???? ????, ??????, OLTP-?????? ?????? ???????? ??? ?? ???? ?? ??? ?? ???? ??? ?? ?????? ?? ??? ????? ?? ??? ?? ?? ?????? ????? ?? ????????? ?? ?? ??? ?? ????? ???? ?? ?????? ???????? ?? ???? ??? ?????? ??????, ???? ?? ???? ???? ?? SQL ????? ?? ????? ????????? ???? ???? ?????????? ????????? ??? ??, ??????? ?? ?????? ??? ???? noticed ???? ????? ?????? ?? ??? ??? ??? ???-??? ????????? ??? ??? ??, ?? ???? ????? ?? ????? ?????? CPU ????? ??-??? ???????? ?? ??? ???????? ?? ???????????? ?? ?? ???? ?????? concurrently ????????? ?? ??? ??? ??? ???? ?? SQL ????? ?? ????? ????????? ??? ???

Parameterized ?????? ?????

SQL Server 7.0 ?? ?? ???????, ???? ??-??? ???????? ?? ????: parameterization ?????? ?? ????? ???? ??? ???????, ?????? ?? SQL Server 7.0 parameterizes ???????? ??? ?? ????? ???? ????????? ???? ?? ?????? ??????? parameterized ??? ?? ???? ??????? reused ?? ???? ??? ?? ??? ????? ??????? ?? ????? ????:
  • ???????? ??????OLE DB ?? ODBC APIs ????? ???????? ??? ?????? ????? ?? ??? ????????? ???? ?? ???? ?? ?????????? ?? ?????? ????? ???? ?? ??? ?????? ???? ?? ?????? ????? ??????? ???? ???????? ???????????? ?? ????? ???? ??? ?????? ???? ?? ?? ????-tier ??????????? ?? ??? ????? ??? ??, ???? ?? ????????? ??? ???? ?????? ?? ???? ???? The query plan that is generated for queries that have parameter markers can be reused by any clients that execute the same query, even if different parameter values are specified. For more information, see the "Parameter Markers" topic in SQL Server 7.0 Books Online.
  • sp_executesqlThesp_executesqlstored procedure is called by the OLE DB provider or ODBC driver when parameter markers are used in an application. ???????, ?? ?? ???? ?? ?? ?? ??? ????????? ?????? ?? ???? ???? ???????? ????????? ?? ?????? ??? ?? ??-??? ???????? parameterize ???? ?? ??? ??? ?? ????????? ?? ??? ??????? ?? ???? EXECUTE ??? ???????? SQL ??? ????????? ???? ?? ??? ???????? ?? ??? ???? ?????? ?? ???? ???? ???? ?? ??????sp_executesql, EXECUTE ??? parameterization ?? ?????? ???? ????? ?? ?????? ????? reuse ?? ??????? ?? ????? ???? ??? ???? ??????? ?? ???, "sp_executesql (T-SQL)" ?? "sp_executesql ?? ????? ????" ???? ??? SQL Server 7.0 ???????? ?????? ??????
  • ???????? ???????????????????? ???????????? ?? ???? ???, ???????? parameterize ?? ???????? ??????? ?? ???: ????? ???? ?? ?????? ????? ??? ???? ??????? ?? ??? SQL Server 7.0 ???????? ?????? ??? "???????? ????????????" ?? "???????????? ???????? ????????????" ???? ?? ??????

???????? ?????? ???? ?????

?????? ?????? ??? bottleneck ??????? ?? ??? ??? ?? ????????? ???? ?? ??? ???????? ?????? ??? ?? ????? ????? ???????? ?????? ??? ???? ?????? ?? ????? ????? ???? ?? ?? ?? SQL Profiler ???? ?? ????? ??? ?? ???? ????? ???? ???? ??? ??? ?? ???? ???? ?? ???????? ????? ???????? decreased ??? ?? ?????? ?? ???? ??? ??? ?? ???????? ?????? ???? ?? ??????? ????? ?????? ???? ???????? ???? ??? ?? ?? ?? ????????? ????, ?? ???? ??? ????? ???????? ??? ?? ??? ???? ????????? ?? ??? ???? ??????? ?? ?? ????????? ????:
  • ????????: ?????????
    ??????: ????????
    ??????: SQL ?????
  • ????????: ????????
    ??????: % ???????? ???
    ??????: ???? ???????? ???????? ???????
  • ????????: SQL ?????: ???? ???????
    ??????: ????? ????
  • ????????: SQL ?????: ???? ???????
    ??????: Stolen ????? ??????
  • ????????: SQL ?????: ?????? ???????
    ??????: ?????? ????? ???? ??
  • ????????: SQL ?????: SQL ??????
    ??????: SQL Compilations/?????
??? CPU ?????, SQL Compilations/????? ?? ????? ???? counters ????, ???? ?? ?????? Grants ????? ?? ????? ?????? Stolen ?????? ?? ???, ?? ????? ???? ?? ?? CPU bottleneck ??? ??????? parameterize ?? ?????? ????? ????? ?? ???? ?? ???? ?? ??? ?????? ??????? ?? ???: ????? ???? ?? ??? ???? ?? ????? ????, ?? ?? ???? ?? "???????? SQL Profiler ????? ????? ???? ??" ??? ?????? ????? ???? ?? SQL Compilations/????? ?????? ?? ???, ?? Stolen ????? ?????? ?? ?????? Grants ????? ?????? ???? ???, ??? SQL ????? ?? ??????-constrained. ???? ??? joins ????? ???? ???? ?? ?? joins ??? ????, ?? "???? SQL Profiler ???? ?????? ????? ????" ????? ?? ??? ????????? ???? ?? ???? ???????? ???? ??? ?? ?? ???? ?? ???? ?? ???? ?? ???????? ?? ???? ??? ???? ??????? ?? ??? SQL Server 7.0 ???????? ?????? ??? ???? ?? ??? ?????? ??? ?? ????? ?????

SQL Profiler ???? ?????

?? ?? ???????? ???????? ?? ??? ?? ??? ???, ?? ???????? SQL Profiler ???? ?? ????? ?? ??? ???????? ??? ?? ?? ?? ?????? ??? ???? ?? ??????? ???? ?? ??? ???? ??; ????? ???? ?? ???? ??? SQL Profiler ??????? ?????? ??? ?? ???? ?? ????? ?? ??? ??? ???? ??? ????? ?????????? (?????????? ??,???), SQL Profiler ???? ????? ?? ????? ????? ??? ??, ???????? ?? ???? ????? ?? ???? ?? ????? ???? ?? ?????? ???? ???? ?? ?????? ????????? ???? ???? ?? ?? ???? ?? ????? ???? ?? ??? ???? ?????? ????? ???? ????? ?? ???? ???? ??????? ????? ?? ??????? ????? ?? ??? ??? ?? ???? ??? (???????????? ??,??????). ?? ???? ???? SQL Server ?????? ?? ???? SQL Profiler ?? ???? ???? ??? (?????????? ??,?? ??? ??? ???????? ????-????? ????, ?? ???? ???????? ??????), ?? ???? ??? ??? ?? ??????? SQL ?????? ??????

???:????????? ???? ?? ?? ???? ?????? ???? ????? ?? ????? ????? ??? ?? ?? ????? ?? ???? ???? ??? ?????? ????? ??, ?? risk ????? ??????? ???? ?? ??? ?????? ???? ??? ???? ??? ??? ???? ????? ?? ??? ??? ?????? ????? ?????? ?? ???? ?? ?????? (?????????? ??,?? ??? ??? ??????), ?? ?? ??? ???: ????? (?????????? ??,?????) ???? ???? ?? ?? ???? ???? ???? ?? ?? ???? ????? ?? ????? ????? ?? ??? ??? ???? ???, ????????? ???? ?????? ??? ?? ????? ????; ???? ???? ?? ???? ???, ??? ???? ??? ?? ?????? ?? ??????? ??????? ?? ???? ?? ??? ???? ?? ??? ??????? ?? ???? ???? ??? ?? ???? ????

?? ?? ???? ?? ??????? ??? ??????? ????????? ?? ???? ???? ?????? ????? ???? ????????? ??????????? ?????? ??? ??? ?? ???? ??? ????? ?? ?? ??? ???? ?? ??? necessarily ????? ???? ???? ?? ?? ??? ?? ???????? ???????????, ??? ?????? ??????? ???????? ?? ???? ?? ???? ?? ????? ???? ??? ?????:
  • ?????? ???? ????? ????? ??
  • ????? ??????? ?????? ?? ????? ???? ???
?????? ?? ???, ???? ??? ?????? ???????? ??? 1.2 ????? ?? ??? 1.5 ????? ?? ?? ???? ?? ???? ?? ??? ??? ???? ????? ??? ?????? ?? ????????? ???? ??, ?? ???????? ???????, ??? ?????? ?? ???????? ???? ??????? ?? ???? ???????? ???????????? ?? ??????, ??????????? ??????? ?? ???? ???? ??????? ??? Conversely, 3 ????? ?? ??? 6 ???? ?? ??? ?? ?????? improving ?? ???? yield ??? ???????? ??? ?? noticeable ?????? ??? ??? ???? ?? ????? ???? ??? ??? ?? ???????? ?? ??????????? ???? ???? ?????? ?? ???? ????? ?????? ?? ????????? ?? ?????? ????? ?? ??? ???????? ?? SQL Profiler ?? ????????? ?? ???? ????? ??? ??????? ?? ????????? ?? ????? ????? ???? ???? ??????? ???????? ?? ????? ????, ?? ???? ??? ???? ???? ?? ???? ???????? ?? ??????????? ?????????????? ?? ???? ???????? ????? ???????? ?? ?? ?? ???? ?? ????????

?? ?? ???? ???? ?? ?????? ?? ??? ??? SQL Profiler ????? ?????? ???, ?? ????? SQL Profiler ??? ??? ?? ????? ?? ??????? ?? ??????? ????? SQL Profiler ????? ???? ??, ????? ????? ?? ???? ????:
  • SQL Profiler ????? ???? ?? ???? ?? ????????:
    1. ????? ???????????? ??,???.
    2. ????? ???????? ???????? ??, ?? ???? ??? ???????????????? ????,????? ???? ?? ???????. ????? ????,???????? ??? ??????? ?? ????????
    3. ????? ??????????? ?? ??? ?? ??? ????? ?? ?? ???????, ?? ???TSQL SQL:StmtCompleted, ??TSQL RPC: ?????. ?????? ?? ???? ???? ?????? ????????? ?? ?? ??? ??? ?? ?? ???? ???? ?? ??? ???
    4. ????? ????,OK.
    ???? ?????? ???????? SQL ?? ????? ?? ????? ?? ??? ?????? ???? ?? ?????, batches ?? ??????????? slowest ??? ??? ???? ?? ?? ?????? ??????? ?? ??? ??, ?? ????? ?? ??????? ????, ?? ????? ???????? ?? ?? ???? ???? ?????? ?? ??? ????? ???????? ??? ?? ??????????? ????? ?? ?? ??? ???????? ???????? ???? ???? ?? ??? ??????? ??? ?? ???? ?? ?????? ?? ???? ???? ?? ??????????? ????? ?? longest ???? ?? ??? ???????? ?? ?????? ???? ???? ?? ?? ?? ?????? ?? ??? ???? ????? ?????? ??????????? ????? ??, ?? ?? ????? ???????? ?? ???? ??? ?????? ???? durations ??????? ?? ?????? ???????? ?? ??? ????????? ?? ??? ????

    ?????? ?? ?? ??????? ????? ??? ???? durations ?? ??? ???????? ??????? ?? ??????? ????? ??? ?? ????? ??? ?? ??? ??? ????? ?? ????? ???? ?? ??? ??, ?? ??? ??????? ??? ????? ?????? ?? ??? ????? ???? ?? ??? ??? ????? ?????? ????? ?? ????? ?? ????? ????? ??? ??? ??? ????? ?? ????? ?? ?????? ?? ??? ???????? ??? ??, ?? ????? ?? ??? ????? ?? ??? ???????? ??? ?? ???? ?? ???? ?? ??, ?? ??? ????? ?? ???? ?? ??? ????? ?????? ??? ???? ?????? ?? CPU ????? ???????? ? ??? ??? ?????? bottleneck (CPU ?? ??????) ?? stress ?? ?? ???? ????? ?????? ??????????? ??????? ?? ???? ???? ??? ????? ?? ???? ??? ???? ??????? ?? ?????? ????? ??, ?? ??? SQL Server 7.0 ???????? ?????? ??? "(T-SQL) ?? ??? ????" ???? ?? ??????
  • SQL Profiler ????? ????? ???? ?? ???? ?? ????????:
    1. ????? ???????????? ??,???.
    2. ????? ???????? ???????? ??, ?? ???? ??? ???????????????? ????, ?????????? ???? ?? ???????? ????, ?????with:????? ???????? ??? ??? ????? ????,?????? ??????? ???? ??? ??????? ?? ??????? ?? ?????????????
    3. ????? ????????????, ?? ???? ??? ?? ????????? ???? ?? ??? ??????? ????? ????
    4. ????? ????,OK.

????? ?? ??????

????? ?? ??? ??? ?????? ?? ??????? ?? SQL Server ??? ??? ???????? ?? ??????? ?? ??? ??? ?? ???? ???? ????? ??, ???? ??????????? ?????????? ?? ????? ?? ????? ????? ?? ??? ??? ????:
  • SQL ?? Exec SQL; ????? MISC: ????? ?????: CursorprepareASQL ????? ????????? ????? ???? ?? ?? ???? SQL ??? ??????? ????? ?????? ?? ??? (ODBC) ?? SQLPrepare/SQLExecute ?? ICommandText::Prepare/ICommandText::Execute (?? ??? OLE DB) ?? ????? ??????? ?????? ??? (???????-???? ?????) ?? ??? ????? ?? ??? ????? ???? ??? ??: ???, ???? ????? ????, rowset ???? = 1? ACursorprepare????? ????? ???? ?? ?? ??? ?????-???? ????? ???? SQL ?? ????? ???? ??? ??? ????? ????? ???????? ??? ?? ?? ?? ??? (ODBC) ?? SQLPrepare/SQLExecute ?? ICommandText::Prepare/ICommandText::Execute (?? ??? OLE DB) ?? ????? ???? ?? ??? ?? ???-??????? ??? ??? ????? ???????? exec SQL????? ????? ???? ?? ?? ?? ?? ?????? prepared ????? ?? ????? ?????? ???????? ???? ??? ??? ??? ?? ?? ?????? ?? ???? ???? ?????????? ????? ???, ???? ????????? ?? ????? prepare/????????? ???? ?? ?????? ????? ?? ?? ??? ???? ??? ??? ??? ??, ?? ?? ??? ?? ????? ?? ??? prepare/????????? ???? ?? ??? ??? ?? ????????? ???? ????

    Ideally, ??? ????????? ?? ??? ???? SQL ??? ????? ???? ?? ?? ????????? ???? ?? ??? ?? ??? ?? ??????????? ?? ?? ????? ?? ??? ??? ????????? ?????? ???? ?? ??? ???? ??? ?? ??? ?? ?? ???? prepared ??? ????? ??? ?????? compilation ?? ???? ?? ??????? ??? ?? ???? ?? ??? ?????? ?? ????????? ???? ?? ??? ????? ???, ?? Microsoft ??????? ???? ?? ?? ?? ???? ????? ???? ?? ??? ????? ?? ??? ??, ?? ???? ??? ???? SQL ??? ????????? ?????? ??? roundtrips ???????: ?? ???, ?? ??? ????????? ???? ?? ???, ?? ?? ??? unprepare ???? ?? ??? ????? ????? ?? ?? ?? ???? ????? trips ?????? ?????-???? ????? ?? ????? ?? ??? ??: ?? ?????, ????????? ?? ??? ????? ?? ??? ??, ??? ??? ???? ?? ??? ?? ?? ????, ?? fetch ???? ?? ??? ?? ????? ???? ?? ???, ?? ??? unprepare ???? ?? ??? ??? ?? roundtrip ???? ?????? ?????? ?? ????????? ?? ??? ???

    ????? ?? ??? ??? ?????? ??????? ???? ????????? prepare/????????? ???? ?????, ????? ?????? ?? ?????? ?? ?? ?????? (????? ?? ????????? ????) ??? ?? ??????Exec SQL ????? ????????? ??? ??? ?? ???? ?????SQL ????? ????, ??CursorPrepare????? (???? ??? ??? ???? ?? ??? ?? ?? ?? ?? ?? ??? ?? ?? ????? ??????)? ?? ????? ???? ?? ?? prepared ??? ??? ?? ??? reused ????? ???????? ???? ??? overcome ???? ?? ??? ?????? ????? ?? ??? overhead. ??? ?? ??????SQL ????? ????, ??CursorPrepare????? ?? ?????? ?? ?????? roughly ??Exec SQL ????? ?????????, ?? ?? ???? ?? ????? ?? ????????? ?? ???? ??????? ????? prepare/????????? ????? ?? ??? ???? ??? ?? ????? ?? ?? ??? ???? ?? ??? ??? ?? ???? ???: ????? ???? ?? ?????? ????? ?? ?? ??? ??? ?? ????? ?? ?? ?? ??? ?? ???? ????? ???? ?? ???, ???? ????????? ?? ??? ???? ????

    ????????? prepare/????????? ???? ?????? ?? ????? ???? ?? ??? ????? ??? ?? ???? ?? ???? ????? ?????? ?? ?? ????? ???? ?? ??? ??? prepared ??? ?? ????? ??? ???? ???? HSTMT ???? ODBC ?? OLE DB ??? ICommandText ???????? ?????? ????????? ??? ??? HSTMT ???????, ???? SQL ??? ?????, prepared ??? ????????? ????, ?? ??? ???? prepared ????? ?? ??? ????? ?? ????, HSTMT ???? ???? ?? ??? ?? ??????? ?????? ??? ??? ?? ?? ???? ???, ?? ???? ???? ??? ??? prepare/????????? ???? ??? ?????? ???, ?? ??????? roundtrips ?? ???????? overhead ?? ????? ?????? ??????? ??? ???? ???? ????????? ???? ???? HSTMT ?? ???????? ?? prepared ??? ????? ??? ?? reuse ?? ??? ???? ????? ??????? ???? ?? ??? ???? ?????? ??? ??????? ?? ??????? ???? ???? ?? ???? ?? ??; ????????? ?? ??????????? ?? ?????? ????, ?? ?? ??????? ?? ????? ???? ?? ??? ?????????? ??? ??? ????????? ???? ????, ?? ???????? ?????? ?? ???? prepare/????????? ???? ?? ????? ???? ??? ?? ????? ?????
  • ???????? ?????? ?? ????? ????????????? ???????? ?????? ?? ?? ??? ?? ????? ????? ?? ?????? ??? ???? Transact SQL ??? ?? ????? ????????? ???? ?? ??? ????? ?? ????? ???? ??? ??? ?????? ?? ????????? ??, ?? ??? ???? parameterized ?????? ?? ??? ??? ????? ???? ??, ?? SQL Server ????? ?? ?? ?????? ?? ??? ??? parameterized ????? caches. ???? ?????? ?? ?? ?? ?? ?? ???? ???????? ?? ????? ???? ?? ??? ?????? ????? ?? ??? ??? ?? ?????? ????? ????? ?? ??? SQL ????? ???? ??; SQL ?????, ?????? ?????? ????? ?? ??????? ???????? substituting ?????? ???? ????? ?? ???? ????

    ??? ????????? ???????? ?????? (ODBC) ?? SQLExecDirect ?? ICommandText::Execute ?? (OLE DB) ?? ??????? ??? ?? ??? ????? ???? ??, ?? ??????? ?? ??????? ???????? ??? ?? SQL ??? ???????? ?? ?? ??? ??? ??? ????????? ???? ?? ??sp_executesql??? ????? ??? ????? ???? ?? ???-??? ????????? ???? ?? ??? ???? ??? ?? SQL ????? ??? ???? ?? ??? ???????sp_executesql, ??? ???????? ??? ?? ??? ??? ???? ????? ?? ??? ????????? ??? ?? ???? ???? ?? ?? ?? ????? reuses ?? ?? ?? ????? ????? ???

    ??? ???? ????????? ???????? ?????? ?? ??????? ??? ????? ???? ??, ?? ?? ??? ?? ???? ??? ?? ????????? ???? ?? ????????? SQL Profiler ????? "sp_executesql." ?? ??? ????? ???????, ???????sp_executesql?? ???? ?? ???? ???, ???? ???? ??? ?????????? ???????? ?????? ?? ????? ?? ????? ???? ????

    Prepare/????????? ???? ?? ???? ??? ???? ??????? ?? ??? SQL Server 7.0 ???????? ?????? ??? "???: ???????? ??????? ?????? ?? ?????" ???? ?? ?????? For more information about parameter markers, see the "Parameter Markers" topic in SQL Server 7.0 Books Online.
  • SP:CompletedDynamic SQL statements executed with the EXECUTE command show up as anSP:Completedevent with the text "Dynamic SQL." ??????? ????SP:Completedevent, and then search for any occurrences that have "Dynamic SQL" as the text. If there are many of these events, you may be able to improve application performance by usingsp_executesqlinstead of the EXECUTE statement. Thesp_executesql???????? ????????? SQL ????? ???????? ??????? ?? ?? ?????? ??? ?? ??????? ?????????? ?? ????? ???? ??? ????????? ?? ??? ???? ????? ???? ?? ??? ?????? ???? ??? ?? ?? EXECUTE ??? ?? ????? ????, ????? parameterized ???? ??, ?? ?? ?? ???? reused ?????? ??? ?? ??? ???????? ?? ????? ???? ??? ????????? ?? ?? ?? ?? ???

    ???????? ?? EXECUTE ?? ??? ???????? SQL ????? ?? ????? ???????????? ?? ????????? ???? ?? ??? ???????? ???, ??? ??????? ID ?? ??????? ??? ?? ???????? ???? ?? ???? ????? (??????? ????????? ????????? ????, ????????????????)? ?? ????? ?????????, ?? ??? ??? chronological ???? ??? ????? ???? ??? ????? ??????? ID ?? ?????? ??????? ?? ???? ??? (???????????), ?? ?? ?? ??? ?? ??? ????? ???? ?? ???????SP: ???????, ??SP: ????????? ??? ??????? ?? ??? ?????? ?? ????? ?? ??????? ??? ?? ??? ??? ??? ???? ??? (???????????? ??,??????). ???????? SQL ????? ??????? ??? ?? ?????? ??????? ??? ???? ???????? ????????? ??? ???? ???, ?? ??? ????? ????? ???? ??SP: ???????, ??SP: ??????? ????????? ?? ??? ?????? ??? ????? ??? ??? ???????? ????????? ??????? ???? ??? ??, ?? ??? ??? ???? ??-??? ?????? ???????? ???? ??? ??, ?? ???? ???? ????? (?? ????? ?? ???? ???????????? ?? ???,NT ?????????? ????? ????) ???? ???? ????????? ???? ??? ?? ????????? ???? ?? ???? ???? ?? ???? ??? ???????? ???? ??? ?????? ?? ??? ?????????, ???? ?? ??? ?? ?? ??? ???? ??? ????? ????, ????SQL:BatchCompleted, ??SQL:RPCCompleted.

    ?? ?? ????????? ?? ???? EXECUTE ??? ????? ???? ?? ??? ??, ?? ??? ??? ????? ?? ??? ?? ??? ?? ??? ?? ????? ????sp_executesql. ?????? ?? ???, ?????????? ???????? ?? ????? ???? ???? EXECUTE ?? ???????? SQL ???? ?? ????? ???? ???? ??? ?? ????????? ????? ???????? ?? ??? ??? ??? ?????? ???, ID ?? idValue ???? ??, ?? ???? ??? ID ??? ?? ?????? ?????? ?? ?? ?? ??? ???? ??? ????????? ???? ??? ???? EXECUTE ??? ?? ????? ??, ????????? ????? ???? ????? ??? ?? ???:
    drop proc dynamicUsingEXECUTE
    		  go create proc dynamicUsingEXECUTE @table sysname, @idName varchar(10),
    		  @idValue varchar(10) as declare @query nvarchar(4000) -- Build query string
    		  with parameter. -- Notice the use of escape quotes. select @query = 'select *
    		  from ' + @table + ' where ' + @idName + ' = ''' + @idValue + '''' exec (@query)
    		  go
    Assuming ?? ?????? ?? ???? ???????? ??? ?? parameterized, ??? ?? ?? ????????? ?? ??????? ????????? ????????????? ??????pubs????? ??????? ?? ?? ??? ?? ??? ????? ???idValue @????????, SQL ????? ???????? ???????? ?? ??? ?? ??? ?? ?????? ????? ????? ???? ?????? ??? ?????? ?? ???::
    exec dynamicUsingEXECUTE
    		  'titles', 'title_id', 'MC2222' go exec dynamicUsingEXECUTE 'titles',
    		  'title_id', 'BU7832'
    ???:?? ?????? ???, ?????? ?? ?????? ???? ?? SQL ????? ???????? ??? ?? ?? parameterize ?? ?????? ??? ???????? ????? ?? ???: ????? ?? ???? ???? ????, ??? ?? ?? ???? ?????? SQL Server ???????? ??? ?? parameterize ???? ?? ???? ?? ?? ???? ??? ??, SQL Server ?? ???? ????? ????? ?? ????? ?? ???????? ?? ??? ???idValue @???????? ????????? ?? ??? ??? ??????? ?????? ????? ?????? ?? ?????? ????? ???? ???

    ?? ????????? ?? ????? ???? ?? ??? ?????????sp_executesql?? ???? EXECUTE ???? ???????? ??????????? ?? ??? ?????? ???? ??sp_executesql???? ???? ??????? ?? SQL ????? ?????? reused ???? ?? ??? ???? ??????? ??? ???????? ??????? ????? ??? ?????? ?? ???::
    drop proc dynamicUsingSP_EXECUTESQL go create proc
    		  dynamicUsingSP_EXECUTESQL @table sysname, @idName varchar(10), @idValue
    		  varchar(10) as declare @query nvarchar(4000) -- Build query string with
    		  parameter select @query = 'select * from ' + @table + ' where ' + @idName + ' =
    		  @idValue' -- Now execute with parameter exec sp_executesql @query, N'@idValue
    		  varchar(10)', @idValue go exec dynamicUsingSP_EXECUTESQL 'titles', 'title_id',
    		  'MC2222' go exec dynamicUsingSP_EXECUTESQL 'titles', 'title_id',
    		  'BU7832'
    ?? ?????? ???, ???? ??? ??sp_executesql??? ?????????, SQL ????? ?? ??? ?? ??? ???? ?? ??? ??? parameterized ????? ????? ????????with:title_id???????? ?? ??? ???? ????? ???????? ?? ??? SQL Server reuses ????? ?? ?? ???????? ??? ?? ???? ?? ???? ??? ???? ??????? ?? ???sp_executesql, "sp_executesql (T-SQL)" ?? "sp_executesql ?? ????? ????" ???? ??? SQL Server 7.0 ???????? ?????? ??????
  • SP:RECOMPILES?? ????? ????? ???? ?? ?? ??? ???????? ????????? ???????? ?? ????? recompiled ???? ??? ??? ?? recompile ????? ?? SQL ????? ?? ?????? ?? ????? ?? ?????? ???????? ?? ???? ?????? compilation ?? ??? ????? ???? ???
??? ?? ???? ??? ?? ?????? ?? ??? ??, ?? ????????? ?? ???? ??-??? ?????? SQL ????? ?? ??????? ????????? ??? SQL ????? ????????? ???? ?? ?? ?? ??? ???????? parameterize ?? ???? ?? ?? ???? ?? ?? ?? ?? ?? ?? ?? ???????? ???-??? ????? ??? ???? ???, ???????? ?????? ?? ????????? ?? ?? SQL ????? ???????? ?? ?? ?? ????? ????? ???? ?? ???????? ??? SQL ????? ???????? ?????? ??? ?? SQL Compilations/????? ?????? ???? ?????? CPU intensive ?? ???? ??? ?? ???? ???????? ???????????? ?? ???? ?? ?????? ?? ?? ???? ?? ??? ???????? ??????? ?????? ???????? ??????, ?? ?? ?????? ?? ??? ???????? ???????????? ?????, ???????? ?????? ?? ????? ??, ?? ?? ????? ???? ?? ????? ????sp_executesql.

??????

??????? ?? SQL ????? ??? ??????????? ?? ???????? ?? ?????? ?? ???? ??? ???? ??????? ?? ??? ?????? ?? Microsoft ???????? ??? ????? ?? ??? ????? ???? ???????? ?? ????? ????:
224587SQL ????? ?? ??? ????????? ???????? ???????? ?? ?????? ???? ????
224453SQL Server 7.0 ?? 2000 ????????? ?????? ?? ??? ???? ?? INF: ?? ?????
243586???????? ????????? recompilation ?????? ??????
243589SQL Server 7.0 ?? ??? ??? ??????? ????-???? ?? ?????? ???? ????
251004INF: SQL Server 7.0 ???????? ??????? ???? ?? ??? ????

???

???? ID: 243588 - ????? ???????: 03 ?????? 2010 - ??????: 2.0
???? ???? ???? ??:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 64-bit Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard Edition
??????: 
kbhowtomaster kbhowto kbinfo kbmt KB243588 KbMthi
???? ?????? ????????
??????????: ?? ???? ?? ???? ??????? ?? ????? ?? Microsoft ????-?????? ?????????? ?????? ?????? ???? ??? ??. Microsoft ???? ??? ????-???????? ?? ????-???????? ????? ?????? ?? ???? ???????? ???? ?? ???? ????? ????? ??? ?? ??? ?????? ?? ???? ???? ???? ??? ????? ??. ???????, ????-???????? ???? ????? ???? ???? ???? ???. ?????, ????????, ?????-???? ?? ??????? ?? ???????? ?? ???? ???, ???? ?? ??? ?????? ???? ???? ??? ????? ??? ?? ???? ??. Microsoft ??????? ??? ???? ?? ?????? ?? ??????????, ????????? ?? ??? ?????? ?? ???? ????? ?? ???? ???????? ?? ??? ???? ????? ?? ??? ????????? ???? ??. Microsoft ????-?????? ?????????? ?? ????? ?????? ?? ?? ??? ??.
?????????? ?? ??????? ????????? ??????? ??:243588

??????????? ???

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com