日度归档:2018年8月11日

mssql sqlserver 字符串拼接运算符(+)


摘要:
sqlserver 2012前没有类似concat函数,但是系统对sql脚本提供了一种字符串拼接运算符(+)


字符串拼接运算符(+):
此运算符可以将字符串拼接起来,下面将举例分析字符串拼接的方法,
例:

 --将"maomao" 和 "365"这两个字符串拼接起来,得到相应的结果maomao365
  select "maomao"+"365" 


注意事项:
当我们将两个char、nchar、varchar、nvarchar 、binary、varbinary表达式拼接时,
所生成新字符串的长度是两个表达式长度之和。

mssql sqlserver 指定用户访问数据库服务器只能看见自己数据库的方法分享


摘要:
下文分享通过脚本变更sql账户的权限使其只能访问指定的数据库的方法,如下所示:
实验环境:sqlserver 2008

由于开发服务器上部署了N个数据库,先需按照项目组分别给予指定账户访问数据库的权限,避免不同的项目超权限访问其他项目组的数据库,下文分享通过脚本的方式变更账户的权限。
例:设置sql账户dev-test 访问testDataBase数据库

   --默认权限下,账户可以查看数据库下所有数据库,所以我们第一步取消此设置
    DENY VIEW any DataBase to Public   ---取消public角色查看所有数据库的权限,
    
    运行此设置后,数据库中所有账户全部都无法查看任何数据库,谨慎使用
    
    ALTER AUTHORIZATION ON DATABASE::testDataBase TO dev-test; 
     ---设置dev-test账户访问testDataBase数据库 
     ---我们可以采用此方法依次对每个数据库单独设置访问权限

mssql sqlserver 记录一次参数化查询比拼接字符串慢的解决方法分享


摘要:
下文记录一次参数化查询比拼接字符串慢的原因分享


书上说:“sql参数化查询是提高sql查询效率的方法,使用参数化可以缓存查询计划”,
但是我们这次使用参数化查询和字符串查询对比,发现参数化查询比字符串查询慢100倍。

经过仔细对比发现,参数化的过程中,参数类型指定错误,导致索引异常。

所以速度变慢。
修改错误的参数类型后,查询速度恢复正常。