我正在调用下面的代码.
在线(IDataReader dr = cmd.ExecuteReader()) sql barfs 在'CompanyUpdate'附近使用不正确的语法.
using (SqlCommand cmd = new SqlCommand("CompanyUpdate"))
{
cmd.Parameters.Add("@CompanyID",SqlDbType.Int);
cmd.Parameters.Add("@Description",SqlDbType.VarChar,50);
cmd.Parameters["@CompanyID"].Value = companyid;
cmd.Parameters["@Description"].Value = description;
SqlConnection cn = new SqlConnection("Data Source=[datasource];Initial Catalog=dotNext;User ID=[user];Password=[password];Pooling=True;Application Name=dotNext");
cn.Open();
cmd.Connection = cn;
using (IDataReader dr = cmd.ExecuteReader())
{
if (dr.Read())
{
this.CompanyID = dr.GetInt32(0);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我看了一下sqlprofiler并注意到以下内容:
exec sp_executesql N'CompanyUpdate',N'@CompanyID int,@Description varchar(50)',@CompanyID=56,@Description='APC'
Run Code Online (Sandbox Code Playgroud)
它用sp_executesql包装我的命令.我刚刚执行的所有其他sql命令都没有问题.
所以我的问题有两个:1.为什么使用sp_executesql?2.我做错了什么?
详细信息:sql2005,c#,vs2005
c# sql-server visual-studio-2005 sql-server-2005 sql-server-profiler
可以使用SQL Server Profiler捕获查询的结果吗?
即查询生成的结果集
sql-server profiler trace sql-server-profiler sql-server-2008
我已经从表中的sql跟踪插入数据,我在解释表中的数据时遇到问题.
在附加的图像中,与我的SP相关的读取非常低,但在下一行中,Text Data列中的值为NULL,读取非常高.
我怎么解释这个.为什么NULL行具有如此高的读取值?
编辑:我已更新图像文件.现在它具有我的跟踪的前10行的所有列名称,我找不到任何EventType列,但是有一个EventClass列,其值为:每行为15行.

我正在研究使用MS SQL 2008分析从Entity Framework 1生成的SQL的性能.
当我在SQL Server Profiler 2008中运行跟踪时,我注意到了一些我没想到的东西.对于每个执行的查询,我得到两个RPC:Completed语句,用a分隔exec sp_reset_connection statement.这是预期的行为吗?

entity-framework sql-server-profiler sql-server-2008 automapper
我将是第一个承认我在使用SQL Server分析器时经常感到困惑的人.
话虽如此,我决定通过尝试使用Db Set的Include方法来查看生成的SQL.我正在浏览音乐商店的例子,那里有专辑,艺术家和流派.
我注意到的一件事是,有些调用的事件类为SQL:BatchCompleted,而其他调用的事件类为RPC:Completed.似乎在RPC事件类下跟踪了延迟加载调用.
这两个事件类之间有什么区别,为什么延迟加载导致RPC的事件类:已完成?
我试图在我们的 sql server 跟踪中找到特定漏洞利用的示例,并且我想过滤 TextData 列以查找出现三次的“%”:%%%。
这意味着我必须转义特殊字符 %。
一种尝试是使用“\”作为转义字符,如下所示:%\%\%\%%
另一种尝试是将其指定为范围:%[%][%][%]%。
在SQL中,我们可以指定用于LIKE运算符的转义字符,但是当我们在SQL Server Profiler中进行过滤时,有没有办法做到这一点?
使用SQL Server Profiler跟踪存储过程的活动很容易。但是如何通过实体框架跟踪LINQ发出的SQL查询呢?我需要确定这样的查询(LINQ代码),它们消耗大量时间,被最频繁地调用,因此是进行优化的第一个候选对象。
我遇到一些查询有时比从服务器返回结果所需的时间长 500 毫秒的情况。准确地说:正常响应时间为 5-6 毫秒,与服务器的 ping 时间相同。SQL 探查器的正常查询持续时间约为 1 毫秒。有时响应时间会上升到500ms左右。从来没有 300 或 400 毫秒,总是非常接近 500 毫秒。SQL Profiler 报告的实际查询持续时间仍然只有 1 毫秒左右。我使用 Wireshark 分析了网络流量,发现当响应时间为 500 毫秒时,我几乎立即收到请求包的 ACK(在 5-6 毫秒 ping 时间内)。这一定意味着服务器快速接收请求并且这不是与网络相关的问题,对吧?
因此,由于某种原因,SQL 服务器收到请求,但在执行查询之前会等待,或者执行 SQL 探查器的“持续时间”中未包含的其他操作。看起来很奇怪,它总是在 500 毫秒左右 - 这会给任何人带来任何关联吗?PS:我也觉得SQL Server这么快发送ACK可能有点奇怪?通常我希望它等待更长的时间,事实上,当响应时间很短时,就不会发送 ACK(只是搭载在响应包上)。
编辑:我正在循环测试这个。大多数响应速度很快,只有一小部分有这种延迟。延误通常是分组的。这是一个生产服务器,我认为它可能与同时发生的其他请求有关,但令我困惑的是为什么它总是有 500 毫秒的延迟,以及为什么它没有包含在分析器的“持续时间”列中。
我在这里错过了什么?我在SQL Server Profiler中看到的查询都是针对master数据库的,这使得很难按数据库名称进行过滤...我应该看哪个事件或事件,以便按数据库名称进行过滤.
更大的问题是,究竟发生了什么?
我正在使用SQL Server Profiler来查看我的数据库活动.在那里,我想找出哪个客户端进程ID与哪台机器关联(从应用程序运行的位置).因为我的应用程序的多个实例正在不同的机器上运行.所以我想要识别它们.那么有什么方法可以找到ClientProcessID吗?