DECLARE @sys_usr char(30);
SET @sys_usr = SYSTEM_USER;
SELECT 'The current system user is: '+ @sys_usr;
当然也可以使用SUSER_NAME函数获取:
SELECT SUSER_NAME();
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8183550/viewspace-695723/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8183550/viewspace-695723/
今天群里有人在问,怎么知道自己当前登录SQL用户名??可以使用SYSTEM_USER 系统函数获取:DECLARE @sys_usr char(30);SET @sys_usr = SYSTEM_USER;SE...
自己写的数据库装载工具,平时工作中用于装载大文本文件到数据库表,也能直接装载excel,不过excel只能使用第一个sheet,且不支持合并的单元格。
jdk要求版本1.6及以上。
使用方法: java -jar lynload.jar,即可看到中文命令行参数(unix下需设置gbk字符集环境才能看中文,没gbk环境不能看中文,但不影响导入数据)。
1.同时支持多个数据库.
2.支持任意字符串作为列分隔符,什么竖线逗号或者十六进制字符及任意组合字符串都行
3.支持任意字符串作为每行分隔符,例如\r,\r\n,或者十六进制字符或任意指定的字符串(例如可实现把整个日志文件装入数据库的单个clob字段).
4.支持任意大小的文本,装入几十GB都试过没问题。
5.明确到每一行的错误信息.(装载时会生成一个.err文件,里面有装载出错的每一行错误原因(少字段还是格式不符合要求等等)。
6.可以作为库使用在jsp等后台直接调用,将整个jar作为库,使用
OraLoad类的int ProcLoad(Connection in_conn, String args[])函数就可以实现类似功能了。例如 new OraLoad.ProcLoad( null, "-u test -p testpwd -i 127.0.0.1 -s ora10 -f test.txt -t tmp_test -c , -e gbk");
具体参数如下:
Usage:
-db database type
1或者oracle, oracle数据库,不区分大小写,默认1,需java1.5及以上版本
2或者sqlserver, mssqlserver数据库,不区分大小写,需java1.6及以上版本
3或者mysql, mysql数据库,不区分大小写,需java1.5及以上版本
4或者sybase, sybase数据库,不区分大小写(暂未测试)
数据库连接的url.默认空字符串
如果有url参数,则-i-p-s-dn参数全无效。
如果没有url参数,则必须提供-i-p-s参数,程序里面好拼凑url
例如: jdbc:sqlserver://localhost:1433; DatabaseName=sample
-i ip address:port
ip地址和端口,中间用冒号隔开
url不为空则此参数无效
如果不带端口,系统根据数据库类型采用默认端口
oracle数据库: 默认为1521端口
sqlserver数据库: 默认为1433端口
mysql数据库: 默认为3306端口
sybase数据库: 默认为5000端口
例如: 127.0.0.1:1521
例如: 192.168.0.1
-s serviceid or database name
oracle服务名或者其他数据库的数据库名
url不为空则此参数无效
-u username
用户名,必输
-p Password
登录密码,必输
-t TableName
要插入的表名,可以带用户,必输
例如: scott.emp 或者 emp都行
-f FileName
来源的文件名,必输
-ff FileName format
来源的文件名类型:txt,文本文件;xls:Excel2003或2007文件),默认是txt
对于Excel文件的导入,仅导入第一个sheet的内容,其他sheet的内容忽略
-e Encoding
文件的编码,默认gbk
-c Cut split string
分隔字符串,可以是多个字符组合,默认竖线
-r commit rows
每插入多少行提交一次,-1表示不提交,默认-1,如果设置了ac参数为1,则此参数无效。
注意:如果设置了此参数,每到此行数会执行一次commit,如果是外部调用此过程要注意所有数据会被提交
-ac all commit
0.插入成功的都提交,失败的登记文本,默认0; 1.全部插入成功后才提交(有失败则回滚并结束)
-a column flag
第一行的类型
0.没有列名行,默认0。此值为0则it参数不生效。
1.第一行是逗号分隔的包括列类型的列信息,例如NAME VARCHAR2(30),注意,区分大小写
2.第一行是列分隔符分隔的列名(不包括列字段信息),注意,列名区分大小写
-it insert type
1.导入的列需要跟数据库列名个数及名称完全相同,顺序无所谓,默认1
2.仅导入文件字段名与数据库字段名完全相同的数据,顺序无所谓
3.第一行是列信息,按此列信息创建新表导入数据(暂不用)
4.忽略第一行,无论第一行是什么数据全部忽略,从第二行按列字段顺序匹配装载
必须在-a 参数 > 0时才生效,否则无意义
-d date formate
日期格式,参考java的SimpleDateFormate类参数,默认自动识别
可识别格式:yyyyMMdd, yyyy-MM-dd, yyyy/MM/dd, yyyyMMdd:HHmmss(等于oracle的yyyymmdd:hh24miss)
yyyy年,MM月,dd日,HH 24小时制时,hh 12小时制时,mm 分, ss秒
-l line end string
每条记录结尾的分隔符,默认是 \r\n回车换行符,支持前面-c参数说的转义符
oracle例子: 登陆scott用户,裝载a.txt的逗号分隔的gbk编码文本内容到scott.emp
java -jar xxx.jar -i 127.0.0.1 -p 1521 -s ora10 -u system -p manager -t scott.emp -f a.txt -c ,
sqlserver例子: 登陆11.8.126.181数据库的test用户,裝载f: est.xlsx的excel数据到tmp_i表
java -jar -db sqlserver -i 11.8.126.181 -s abcd -u test -w test -f f: est.xlsx -t tmp_i -ff xls
mysql例子: 登陆本机数据库的root用户,裝载a.txt的文本数据到tmp_i表,不提交
java -jar xxx.jar -db mysql -i 127.0.0.1 -s gjjgj -u root -w root -f a.txt -t tmp_i
SELECT login_name,Count(0) user_count
FROM Sys.dm_exec_requests dr WITH(nolock)
RIGHT OUTER JOIN Sys.dm_exec_sessions ds WITH(nolock)
ON dr.session_id = ds.session_id
RIGHT OUTER JOIN Sys.dm_exec_conn...
DECLARE @sys_usr char(30);
SET @sys_usr = SYSTEM_USER;
SELECT 'The current system user is: '+ @sys_usr;
GO当然也可以使用SUSER_NAME函数获取:SELECT SUSE...
用户权限的控制涉及到很多方面,包括数据库对象的权限和用户权限等。在 SQL Server 中,public 是一种数据库角色,可以授予不同的权限。默认情况下,public 角色具有以下权限:
1. select 权限,可以查询数据库中的表、视图等对象。
2. execute 权限,可以执行存储过程、函数等对象。
3. connect 权限,可以连接到数据库。
public 角色不能直接进行增删改操作,但是可以通过授权等方式获得相应的权限。例如,将 public 角色授予某个表的 insert、update、delete 权限,则该角色可以对该表进行相应的操作。
需要注意的是,public 角色是一种特殊的角色,所有用户都是其成员。因此,在授予权限时需要谨慎,避免对整个数据库的安全性造成影响。