我已经阅读了很多关于参数嗅探的文章,但目前尚不清楚这是好还是坏.任何人都可以通过一个简单的例子来解释
有没有办法自动检测错误的计划分配给特定的声明?
提前致谢.
1 /以下代码片段显示了预期的错误:INSERT语句与FOREIGN KEY约束FK _...冲突.
SET XACT_ABORT ON;
BEGIN TRANSACTION
INSERT INTO linkedsrv1.db1.[dbo].tbl1 ([Col1], [Col2])
VALUES (1200, 0)
COMMIT TRANSACTION
Run Code Online (Sandbox Code Playgroud)
2 /但是当我把它放在BEGIN TRY/CATCH中时,错误消息是模糊的:消息1206,级别18,状态118,行18 Microsoft分布式事务处理协调器(MS DTC)已取消分布式事务.
SET XACT_ABORT ON;
BEGIN TRY
BEGIN TRANSACTION
-- Error is on this line
INSERT INTO linkedsrv1.db1.[dbo].tbl1 ([IdWebsite], [IdProductType])
VALUES (1200, 0)
COMMIT TRANSACTION
END TRY
BEGIN CATCH
PRINT 'Error' -- Code not reached
SELECT ERROR_NUMBER(), ERROR_MESSAGE(), ERROR_SEVERITY(), ERROR_STATE()
IF XACT_STATE() != 0
ROLLBACK TRANSACTION
END CATCH
Run Code Online (Sandbox Code Playgroud)
知道为什么会这样吗?
稍后编辑:
它适用于我删除不需要的显式事务.当我放入BEGIN/COMMIT TRAN时,我仍然不清楚为什么会出现这个错误.
如果我在链接服务器上的多个表中有多个插入,我会得到相同的错误.
欢迎任何评论/评论.
我调用了一个WebMethod通过Fiddler,我在"请求体"中提供了2个需要的参数,我得到一个奇怪的行为:
HttpContext.Current.Request.FormWCF在调试时WebMethod,POST参数不会传输到service => ,HttpContext.Current.Request.Form为空.任何线索为什么会这样?
这是我的代码:
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "/getsomething")]
[FaultContract(typeof(ResponseMessageStatus))]
[DynamicResponseType]
public Stream GetSomething()
{
var par1 = HttpContext.Current.Request.Form["myparameter"] ;
//after 10 requests, HttpContext.Current.Request.Form is empty.
...
}
Run Code Online (Sandbox Code Playgroud) 我正在寻找如何实现一个查询,该查询返回层次结构中允许特定节点的多个父节点的所有节点的所有级别(在所有级别,因此它包括直接祖先,祖先的祖先等).
给出以下表结构:
Table Nodes: Id, Name
Table Relations: IdNode, IdParentNode
Run Code Online (Sandbox Code Playgroud)
一个类似的问题是SQL Server - 以多对多的关系获取连续的所有孩子?,但我没有成功地适应我的情况.
鉴于桌子的东西
IdStuff StuffName IdLanguage
------- --------- ----------
1 Stuff 1 1
1 Stuff 2 2
Run Code Online (Sandbox Code Playgroud)
和观点:vwLanguages
IdLanguage Name
---------- ----
1 Language 1
2 Language 2
3 Language 3
Run Code Online (Sandbox Code Playgroud)
我想获得:
IdStuff StuffName IdLanguage
------- --------- ----------
1 Stuff 1 1
1 Stuff 2 2
1 NULL 3
Run Code Online (Sandbox Code Playgroud)
我试过RIGHT JOIN,但我没有成功......
SELECT
S.IdStuff, S.StuffName, vwLanguages.IdLanguage
FROM
Stuff S
RIGHT JOIN vwLanguages ON vwLanguages.IdLanguage = S.IdLanguage
Run Code Online (Sandbox Code Playgroud)
问题是只显示了2行,语言1和语言2 ...