Sql server &引用&引用;char在sql server中引发错误

Sql server &引用&引用;char在sql server中引发错误,sql-server,tsql,special-characters,Sql Server,Tsql,Special Characters,这应该不是一个很难解决的问题,但我正在谷歌上搜索解决方案 我有一个数据库,用户的名字像“firstname.lastname”。 例如:约翰·史密斯、b·奥巴马、v·普京等 我尝试在SP中为这些用户添加一些角色 这是我的SP: ALTER PROCEDURE [dbo].[sp_adaugaUserInRol] -- Add the parameters for the stored procedure here @Rol varchar(50), @User varc

这应该不是一个很难解决的问题,但我正在谷歌上搜索解决方案

我有一个数据库,用户的名字像“firstname.lastname”。 例如:约翰·史密斯、b·奥巴马、v·普京等

我尝试在SP中为这些用户添加一些角色

这是我的SP:

ALTER PROCEDURE [dbo].[sp_adaugaUserInRol]
    -- Add the parameters for the stored procedure here
    @Rol varchar(50), 
    @User varchar(32)
AS
BEGIN
declare @sRol varchar(50),
        @sUser varchar(32);
set @sUser = LTRIM(RTRIM(@User))
set @sRol = LTRIM(RTRIM(@Rol))
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    print(' ALTER ROLE ' + @sRol  + ' ADD MEMBER  ' +@User )



END 
如果我使用一个字符串作为用户,比如“john”、“obama”,它就可以工作,但是如果我将其用作“john.smith”或“b.obama”,我会在“.”附近得到错误的
语法。
,这是非常符合逻辑的,因为SQL认为john是一个表,smith是一个列(我猜)


如何告诉SQL john.smith是一个字符串?

将其放在方括号中:

[john.smith]

放在方括号内:

[john.smith]

我不敢相信这是那么简单,非常感谢。或者如果你想符合ANSI SQL标准,请使用双引号:
“john.smith”
@CiucaS,注意,如果双引号
ANSI\u默认值
QUOTED\u标识符
必须设置。我不敢相信这是那么简单,非常感谢。或者,如果您希望遵守ANSI SQL标准,请使用双引号:
“john.smith”
@CiucaS,请注意,在双引号的情况下,必须设置ANSI\u默认值或
QUOTED\u标识符