AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 17760
Accepted
Iain Samuel McLean Elder
Iain Samuel McLean Elder
Asked: 2012-05-12 12:26:20 +0800 CST2012-05-12 12:26:20 +0800 CST 2012-05-12 12:26:20 +0800 CST

为什么参数的顺序对 sp_trace_create 很重要?

  • 772

以下脚本的第一批sp_trace_create按文档顺序调用带参数的存储过程;第二批交换参数的位置@tracefile和@options:

DECLARE @new_trace_id INT;

EXECUTE master.dbo.sp_trace_create
  @trace_id = @new_trace_id OUTPUT,
  @options = 0,
  @tracefile = N'C:\temp\TestTrace';

SELECT @new_trace_id AS [@new_trace_id];

EXECUTE master.dbo.sp_trace_setstatus
  @trace_id = @new_trace_id,
  @status = 2;
GO

DECLARE @new_trace_id INT;

EXECUTE master.dbo.sp_trace_create
  @trace_id = @new_trace_id OUTPUT,
  @tracefile = N'C:\temp\TestTrace',
  @options = 0;

EXECUTE master.dbo.sp_trace_setstatus
  @trace_id = @new_trace_id,
  @status = 2;
GO

第一批创建一个新的跟踪,选择它的 id,然后关闭跟踪。返回一个结果集:

@new_trace_id
2

第二批失败并出现错误:

消息 214,级别 16,状态 3,过程 sp_trace_create,第 1 行过程需要类型为“nvarchar(256)”的参数“@tracefile”。

为什么参数顺序会影响存储过程的输出sp_trace_create?为什么它会因为这样一个误导性的错误信息而失败?

sql-server sql-server-2008-r2
  • 2 2 个回答
  • 3729 Views

2 个回答

  • Voted
  1. Best Answer
    Martin Smith
    2012-09-23T01:47:56+08:002012-09-23T01:47:56+08:00

    我相信这是因为它是一个扩展的存储过程,参数名称实际上完全被忽略了。它只是偏离了位置。

    我已将它们重命名如下(并赋予它们相同的名称),它仍然可以正常工作。

    DECLARE @new_trace_id INT;
    
    EXECUTE master.dbo.sp_trace_create
      @rubbish = @new_trace_id OUTPUT,
      @rubbish = 0,
      @rubbish = N'C:\temp\TestTrace';
    
    SELECT @new_trace_id AS [@new_trace_id];
    
    EXECUTE master.dbo.sp_trace_setstatus
      @trace_id = @new_trace_id,
      @status = 2;
    

    Aaron 提交了一个类似的文档错误sp_executesql,关于.

    该存储过程的另一个令人讨厌的方面是@maxfilesize必须作为“bigint”传递,并且它不接受文字整数。我认为这也是因为它是一个扩展存储过程。

    • 6
  2. Juan Miguel Jimenez
    2018-05-16T08:55:01+08:002018-05-16T08:55:01+08:00

    这对我有用:如果您指定@maxfiles,则必须使用选项TRACE_FILE_ROLLOVER(= 2):

    declare @rc int
    declare @TraceID int
    declare @maxfilesize bigint
    declare @maxfiles int
    
    set @maxfilesize = 2        -- Mb per file
    set @maxfiles = 10          -- number of files (10 files x 2Mb --> 20 Mb)
    
    -- Please replace the text InsertFileNameHere, with an appropriate
    -- filename prefixed by a path, e.g., c:\MyFolder\MyTrace. The .trc extension
    -- will be appended to the filename automatically. If you are writing from
    -- remote server to local drive, please use UNC path and make sure server has
    -- write access to your network share
    
    -- The option @maxfiles it's only admitted if TRACE_FILE_ROLLOVER  (value 2) is set
    exec @rc = sp_trace_create @TraceID output, **2**, N'E:\sql\trazas\traza_a', @maxfilesize, NULL, @maxfiles
    if (@rc != 0) goto error
    
    -- Set the events
    ...
    

    使用此选项(2)创建跟踪没有错误

    • 0

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何查看 Oracle 中的数据库列表?

    • 8 个回答
  • Marko Smith

    mysql innodb_buffer_pool_size 应该有多大?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    从 .frm 和 .ibd 文件恢复表?

    • 10 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve