Sqlserver:Sqlserver数据库的脚本生成器2.0

by admin on 2020年1月3日

问题来源:最近有同事需要执行批量删除语句。根据他提供的业务需求,推荐他使用“TRUNCATE
TABLE”语句。但使用该语句需要 ALTER权限,这与执行用户的角色不符。

这个问题竟然纠结了半个小时!

运行环境:

在执行查找命令时的大小写问题
默认情况下,MySQL在执行查找时不区分字母的大小写。当你在查找时使用like
‘a%’时,
默认将返回以a或者A开头的所有列值,若要在查找时区分大小写,则需要使用collate运算符来实现,具体例子如下:

网站访问速度过慢,我们就要对各个可能拖累网站速度的环节进行检查了,这里我们就如何找出数据库中那些被执行过的效率比较低下的SQL语句做一些分享,以帮助我们更好的优化我们网站的程序。

解决办法:使用EXECUTE AS语句修改执行权限。代码如下:

就问题而言,肯定是出在mybatis中

  dot net 2.0及以上

col_name COLLATE latin1_general_cs LIKE 'a%'
col_name LIKE 'a%' COLLATE latin1_general_cs
col_name COLLATE latin1_bin LIKE 'a%'
col_name LIKE 'a%' COLLATE latin1_bin

(1)在 MySQL 的配置文件中进行设置。具体的位置是 my.ini/my.cnf
,开启MySQL的慢查询输出:log_slow_queries,将其值设置为 ON 即可。

ALTER PROCEDURE [dbo].[sp_TruncateTable] 
    @TableName varchar(200) 
    WITH EXECUTE AS SELF
AS 
BEGIN 
    --打印出当前执行上下文用户
    SELECT  nt_username, loginame 
    FROM sys.sysprocesses 
    WHERE spid = @@SPID

    SET NOCOUNT ON; 
    DECLARE @TruncateSql nvarchar(2000);
    SET @TruncateSql = 'TRUNCATE TABLE ' + @TableName 
    EXEC (@TruncateSql) 
END

终于,找到了答案,

  sqlserver2005管理对象smo。安装sqlserver2005默认即会安装

如果想让某列在查找时始终保持区分字母大小写,则需要用case
sensitive或binary collation来定义列的特性。
当进行简单比较运算,如>=, >, =, <, <=, sorting, and
grouping的时候,将依从字符的内在顺序值,例如‘E’, ‘e’, and
‘é’这些字符有相同的内在顺序值。
和空值NULL相关的问题
空值的概念比较容易混淆,有人认为空值NULL和空
字符”是一会时,其实这样认为是错误的,举例来说,

(2)在 MySQL 客户端进行设置。通过客户端连接到 MySQL
数据库服务器,然后运行如下 SQL 语句:

 

原来是DataSource配置问题,

 

mysql> INSERT INTO my_table (phone) VALUES (NULL);
mysql> INSERT INTO my_table (phone) VALUES ('');
SET GLOBAL log_slow_queries = ON;
SET GLOBAL long_query_time = 3;

通过打印出来的loginame可以看出,执行用户信息已经被修改。

我将配置连接池的数据写到了文件db.properties中,

功能:

上面两条语句有完全不同的意义和结果。第一句表示,向表中插入的记录中的某人的电话号码NULL,意思是还不知道这
条记录中的人的电话号码,而第二句向表中插入”空字符,就意味着已经知道表中这条记录中的人的电话号码,这个电话号码
是”,也可以确定此人没有正常的电话号码。
帮助处理空值NULL的方法,主要通过执行is null运算判断,is not null运算
判断,和IFNULL()函数运算来实现。在SQL中,任何与NULL发生运算关系的结果都不可能为真即永远是假)。为了寻找NULL值
,必须执行is null测试运算。
可以在MyISAM, InnoDB,
BDB或MEMORY等存储类型的表列中含有空值时添加index,但该
index必须声明成not null,这样之后将不可以往该列中输入空值。
当使用load data infile语句载入数据时,空值NULL将
被替换成”。使用DISTINCT, GROUP BY, 或ORDER
BY时所有空值将被视为等同。像COUNT(), MIN(),
SUM()等概要总结函数将忽略空值NULL。
但对一些特殊类型的列来说,比如timestamp类型和具有auto_increment属性的列:前者插入NULL是实际将插入当前时间值,向后者插入NULL时将是下个正整数序列。(BKJIA.COM教程)

这里设置的是将当前运行的 SQL
语句耗时大于或等于3秒的记录下来并输出到日志文件中。这里你可能不知道这个日志文件放哪里了?只需在
MySQL 客户端执行如下命令即可:

SqlMapConfig.xml中引用db.properties配置

  1.编写指定的用户数据库的 所有 象的脚本

默认情况下,MySQL在执行查找时不区分字母的大小写。当你在查找时使用like
‘a%’时, 默认将返回以a或者A开…

show variables like 'slow_query_log_file';

经过几轮测试,后来又将url重新自己配置到SqlMapConfig.xml中,SQL语句执行成功!

  2.编写指定的用户数据库的 单个 对象的脚本

日志查询文件的位置就会被显示出来了。

  3.可以指定只生成drop脚本

对于以上两种方法,个人推荐第二种,因为这种方法无需重启 MySQL
服务,记住第一种方法需要重启 MySQL服务的哦!

  4.可以指定用户对象的类型

您可能感兴趣的文章

  • Mysql 数据库缓存cache功能分析,调试以及性能总结
  • MySQL 大数据量快速插入方法和语句性能优化
  • 总结MySQL数据库服务器逐渐变慢的原因和解决办法
  • MySQL大数据量分页SQL语句优化
  • 改善数据库性能 揭秘SQL优化技巧
  • Navicat for mysql 远程连接 mySql数据库提示10061,1045错误的解决办法
  • windows环境下mysql数据库的主从同步备份步骤
  • 合理使用MySQL数据库索引以使数据库高效运行

  5.修正了sqlserver2005 smo 对象默认生成对象的一个bug

  6.特色功能:可以完美的把具有外键约束关系的表的的参考表的脚本编写进行;在对多个表对象进行脚本编写时,自动按照依赖的先后顺序编写!

截图:

图片 1

下载:

  点此下载

源代码:

  点此下载

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图