在 SQl SERVER 2005中调用当前用户ID
来源:互联网 发布:淘宝被投诉假冒商品 编辑:程序博客网 时间:2024/04/29 03:11
问题:
我现在内容都调用出来了 就是唯一的一个问题 我要调当前用户ID 我用的PHPCMS {$r[userid]}这个变量 在SqlServer上调用不到
$sql="SELECT CustomerID, Carid, TotolPoints, TakePoints, LeavingPoints, CarType,Activation,Consumption
FROM dbo.CardTable WHERE (CustomerID = id)";
id要是个变量
回答:
SUSER_SID()(不带 login_account 参数的指定 SUSER_SID),用于获得当前连接的 security_identifier,不管是否使用 SQL Server 身份验证或 Windows 身份验证。
这是获得当前连接的安全ID
Sql Server 中,当前连接到数据库的用户ID是用函数获得的
返回用户名和用户 ID 的函数_学院频道_school.it168.com
返回用户名和用户 ID 的函数
有几个系统函数可返回用户名和用户 ID。要理解这些函数的参数和输出结果,首先必须理解 Microsoft® SQL Server™ 2000 中使用的名称和 ID 的类型。
登录到 SQL Server 的每个用户在 SQL Server 中都有两个级别的名称,每个名称都与一个唯一的 ID 相关联:
- 登录名。
被授权登录到 SQL Server 的每个用户都有一个登录名,使他们得以访问 SQL Server 实例。有两种类型的登录名:
- Microsoft Windows® 帐户名。
sysadmin 或 securityadmin 固定服务器角色成员可以使用 sp_grantlogin 对 Windows 组或 Windows 帐户的个别用户授权,使其可登录到 SQL Server 实例。于是,Windows 帐户所标识的用户或 Windows 组中的任何组员都可以使用 Windows 身份验证连接 SQL Server 实例。master.dbo.syslogins.loginname 中存储了所有 Windows 帐户名或组名。用于 Windows 帐户或组的 Windows security_identifier 存储在 syslogins.sid 中。
- SQL Server 登录名。
使用 SQL Server 身份验证登录时将用到这些登录名。SQL Server 登录名由 sysadmin 或 securityadmin 固定服务器角色的成员使用 sp_addlogin 进行定义。所有 SQL Server 登录名都存储在 master.dbo.syslogins.loginname 中。SQL Server 生成用作 security_identifier 的 GUID 并将其存储在 syslogins.sid 中。
SQL Server 2000 将 master.dbo.syslogins.sid 作为登录名的 security_identifier。
- Microsoft Windows® 帐户名。
- 数据库用户名。
所有 Windows 帐户或 SQL Server 登录都必须与已授权用户访问的每个数据库中的用户名相关联,或者该数据库必须已启用客户访问。数据库用户名由 db_owner 或 db_accessadmin 固定数据库角色的成员来定义,并存储在每个数据库所建的 sysusers 表中。每个数据库用户名都与存储在 sysusers.uid 中的一个数据库用户 ID 相关联。
每个用户的 security_identifier 都存储在 sysusers.sid 中;因此,可将用户映射回他们相应的登录。如果使用同一数据库用户名作为 SQL Server 登录名或 Windows 帐户名,则可减少混淆;但是,不要求一定这样做。
有关登录和数据库用户帐户的更多信息,请参见登录、用户、角色和组。
获得登录帐户或 ID
连接到 SQL Server 2000 后,使用:
- SUSER_SNAME,用来获得与 security_identifier 关联的 SQL Server 登录名或 Windows 帐户。
- SUSER_SID,用来获得与 SQL Server 登录名或 Windows NT 帐户关联的 security_identifier。
- SUSER_SID()(不带 login_account 参数的指定 SUSER_SID),用于获得当前连接的 security_identifier,不管是否使用 SQL Server 身份验证或 Windows 身份验证。
- SQL-92 函数 SYSTEM_USER,以获得用于 Windows 身份验证连接的 Windows 帐户,或用于 SQL Server 身份验证连接的 SQL Server 登录名。在 Transact-SQL 中,SYSTEM_USER 实现为 SUSER_SNAME()(不指定 security_identifier 的 SUSER_SNAME)的同义词。
在 SQL Server 2000 中,返回登录名或帐户的函数以下面的方式操作:
- SUSER_SNAME(security_identifier)
SUSER_SNAME 具有以下选项之一:
- 用于 Windows 帐户或组的 security_identifier,这种情况下,该函数返回 Windows 帐户名或组名。
- 为 SQL Server 登录生成的伪 security_identifier,这种情况下,函数返回 SQL Server 登录名。
如果没有为使用 Windows 身份验证进行的连接指定 security_identifier,则 SUSER_SNAME 将返回与该连接关联的 Windows 帐户名。如果是使用 SQL Server 身份验证进行的连接,SUSER_SNAME 将返回与该连接关联的 SQL Server 登录。
- SYSTEM_USER
此 SQL-92 函数在 Transact-SQL 中实现为 SUSER_SNAME()(不指定 security_identifier 参数的 SUSER_SNAME)的同义词。
获得数据库用户名或用户 ID
连接到 SQL Server 2000 后,使用:
- USER_ID,用来获得与数据库用户名关联的数据库用户 ID。
- USER_ID(),用来获得与当前连接关联的数据库用户 ID。
- USER_NAME,用来获得与数据库用户 ID 关联的数据库用户名。
- SQL-92 CURRENT_USER 或 SESSION_USER 函数,都是用来获得与当前连接关联的数据库用户名。在 Transact-SQL 中,这些函数实现为 USER_NAME()(不指定 database_user_ID 参数的 USER_NAME)的同义词。Transact-SQL 函数 USER 也实现为 USER_NAME() 的同义词。
SQL-92 允许在这样的 SQL 模块中对 SQL 语句进行编码:该模块的授权标识符与已连接到 SQL 数据库的用户的授权标识符可以相互独立。SQL-92 指定 SESSION_USER 总是返回进行连接的用户的授权标识符。对于从 SQL 模块执行的任何语句,CURRENT_USER 返回 SQL 模块的授权标识符;如果 SQL 语句不是从 SQL 模块执行的,则返回进行连接的用户的授权标识符。如果 SQL 模块没有单独的授权标识符,则 SQL-92 指定 CURRENT_USER 返回与 SESSION_USER 相同的值。Microsoft SQL Server 没有单独用于 SQL 模块的授权标识符,因此,CURRENT_USER 和 SESSION_USER 总是返回相同的值。USER 函数是由 SQL-92 为向后兼容性而定义的函数,用于为早期版本的标准所编写的应用程序。USER 被指定为与 CURRENT_USER 返回相同的值。
在 SQL Server 中,返回登录名或帐户的函数以下面的方式操作:
- USER_ID('database_user_name')
USER_ID 返回与指定数据库用户名关联的数据库用户 ID。如果未指定 database_user_name,则 USER_ID 返回与当前连接关联的数据库用户 ID。
- USER_NAME(database_user_ID)
USER_NAME 返回与指定的数据库用户 ID 关联的数据库用户名。如果未指定 database_user_ID,则 USER_NAME 返回与当前连接关联的数据库用户名。
- CURRENT_USER、SESSION_USER、USER
这些函数都是 USER_NAME()(不指定 database_user_ID 参数的 USER NAME)的同义词。
--------------摘抄自http://school.it168.com/special/manual/sqlserver/ac_8_con_11_0h6b.htm
把上面的SQL语句换成如下:
$sql="SELECT CustomerID, Carid, TotolPoints, TakePoints, LeavingPoints, CarType,Activation,Consumption
FROM dbo.CardTable WHERE (CustomerID = USER_ID('Custom_name') )";
在 SQL Server 中,返回登录名或帐户的函数以下面的方式操作:
USER_ID('database_user_name')
USER_ID 返回与指定数据库用户名关联的数据库用户 ID。如果未指定 database_user_name,则 USER_ID 返回与当前连接关联的数据库用户 ID。
直接用CustomerID=USER_ID() í
如果未指定 database_user_name,则 USER_ID 返回与当前连接关联的数据库用户 ID。
SQL 语句再次修改如下:
$sql="SELECT CustomerID, Carid, TotolPoints, TakePoints, LeavingPoints, CarType,Activation,Consumption
FROM dbo.CardTable WHERE (CustomerID = USER_ID() )";
--------------------至此问题解决
- 在 SQl SERVER 2005中调用当前用户ID
- sql server 2005 用户、组或角色 在当前数据库中已存在 解决办法
- sql server 2005 用户、组或角色在当前数据库中已存在的解决办法
- 用户、组或角色 'zgb' 在当前数据库中已存在。 (Microsoft SQL Server,错误: 15023)
- 用户、组或角色 在当前数据库中已存在。 (Microsoft SQL Server ,错误 : 15023)
- SQL Server中出现用户或角色在当前数据库已经存在的问题的解决
- SQL Server 创建用户时报错:15023 用户,组或角色'XXX'在当前数据库中已存在
- SQL Server 创建用户时报错:15023 用户,组或角色'XXX'在当前数据库中已存在?
- 在SQL SERVER 2005中调用Web Service
- 在SQL SERVER 2005中调用Web Service
- 在SQL SERVER 2005中调用Web Service
- 在SQL SERVER 2005中调用Web Service
- 在SQL SERVER 2005中调用Web Service
- 解决SQL Server 2008 错误15023:当前数据库中已存在用户或角色,SQLServer2008,错误15023 在使用SQL Server 2008时,我们经常会遇到一个
- 在SQL Server中创建用户角色及授权
- 在SQL Server中创建用户角色及授权
- 在SQL Server中创建用户角色及授权
- 在SQL Server中创建用户角色及授权
- 期待关注
- VRRP与HSRP的区别 一
- Git项目合作(remote pull push)学习学习
- 常见26个jquery使用技巧详解(比如禁止右键点击、隐藏文本框文字等)
- 整数对
- 在 SQl SERVER 2005中调用当前用户ID
- 理解Java ClassLoader机制
- img标签usemap属性
- .net程序在无.net环境下运行
- 只有十句话,我却看了十分钟
- Itextsharp encrypt pdf document
- ALSA 所有的资源
- 控制台程序常用技巧
- 试一试