Sql server 存在内部联接时,无法编译锁定语句

Sql server 存在内部联接时,无法编译锁定语句,sql-server,stored-procedures,locking,syntax-error,Sql Server,Stored Procedures,Locking,Syntax Error,我正在用SQLServer2008编写一个存储过程。以下代码: SELECT @LastAccessed = cs.LastAccessed FROM [int].ClientSessions AS cs INNER JOIN dbo.Profiles AS p ON cs.ProfileID = p.ProfileID WITH (XLOCK, ROWLOCK) WHERE (p.ClientID = @ClientID

我正在用SQLServer2008编写一个存储过程。以下代码:

SELECT      @LastAccessed = cs.LastAccessed
FROM        [int].ClientSessions AS cs INNER JOIN
            dbo.Profiles AS p ON cs.ProfileID = p.ProfileID
WITH        (XLOCK, ROWLOCK)
WHERE       (p.ClientID = @ClientID)
…将不编译,并在XLOCK处声明语法错误

如果我删除了内部连接语句,这是不可能的,因为我需要连接,那么XLOCK就可以了。我不明白问题是什么

注意:我只想锁定[int].ClientSessions表,因此我意识到这可能不是最好的方法。

必须将WITH XLOCK、ROWLOCK放在as cs/as p语句之后

差不多

SELECT      @LastAccessed = cs.LastAccessed 
FROM        [int].ClientSessions AS cs WITH (XLOCK, ROWLOCK) INNER JOIN 
            dbo.Profiles AS p ON cs.ProfileID = p.ProfileID 
WHERE       (p.ClientID = @ClientID)

看一看

哇,那不在我的猜测列表中。谢谢。我想第二个是打字错误。我使用以下命令编译它:选择@LastAccessed=cs.LastAccessed FROM[int]。ClientSessions作为cs内部连接dbo.Profiles作为p与XLOCK,cs.ProfileID=p.ProfileID上的ROWLOCK,其中p.ClientID=@ClientID