随笔分类 - 数据库
阿里云mysql数据库恢复到本地
摘要:本地环境为win10,mysql引擎为InnoDB 第一步:服务里面停掉mysql 第二步:把my.ini 的 innodb_force_recovery 设置为0 第三步:把.frm和.idb文件拷到本地mysql存放data目录对应的数据库中 第四步:使原来数据的ibd和当前frm建立关系 AL
阅读全文
sql 将8位字符串转换成日期型
摘要:将8位字符串转换成日期型,方法如下:SELECTCONVERT(varchar(10),CAST('20070405'ASdatetime),120)
阅读全文
服务器直接关机,再开机,硬重启时把数据库搞坏了,状态为“可疑”的解决方法
摘要:服务器放的网站都正常,就是远程连不上,着急改点东西,就让机房的人把服务器重启了一下,那边一般都是直接关机,再开机,硬重启。之前也一直没有出现过异常,但今天硬重启了以后,发现网站出错,一看原来是数据库状态为“可疑”,不能用了,真是吓我一跳,第一次遇到这种问题。在网上搜了一下,找到解决方法,管用,挺好的...
阅读全文
sql server 还原数据库后,删除用户,提示数据库主体在该数据库中拥有架构,无法删除解决方法
摘要:将另一台服务器上的数据库备份文件,在现在用的这台服务器上还原之后,再创建相同的用户名,提示用户已存在想将之前的用户先删除掉,却提示“数据库主体在该数据库中拥有架构,无法删除解决方法”在网上找到方法,试了一下,还真管用。--执行如下SQL语句 ALTER AUTHORIZATION ON SCHEMA...
阅读全文
sql server 2000通过机器名可以连,通过ip连不上的问题
摘要:客户那边两台服务器A和B,之前一直都是好好的,今天因为换了网络环境,结果数据库之间不能相互访问了。目前只能A访问B,B访问不了A,在服务器A上面试了,通过ip连本机,也是连接超时。开始想着是服务器双网卡的问题,后来找了资料,说是可能与没有打sp4补丁有关。我想,这不能啊,之前都是没问题的,后来一查,...
阅读全文
sqlserver中,查看某个函数的调用情况
摘要:今天想在sqlserver中看看自己写的函数都被哪个函数或存储过程调用了,手工检查起来太慢了,于是在网上找一个快速的方法,分享一下。select * from sys.all_sql_modules where definition like '%[name]%'直接一条sql语句就行了,非常方便...
阅读全文
在sqlserver存储过程中给in参数传带逗号值的办法,如传'1','2','3'这样的
摘要:最近在一项目修改中,要在存储过程中给in参数传值,语句写的也对,但怎么执行都得不出结果,如果把这语句直接赋值、执行,却能得出结果,很是奇怪,如:直接执行select schoolname from school_info where code in('01','02'),是可以得出结果的,但在存储...
阅读全文
sqlserver 服务器主体 无法在当前安全上下文下访问数据库
摘要:今天使用sqlserver,发现了一个问题,就是使用 insert into 数据库名.dbo.表名(字段) values(值) 这样语句的时候,会返回错误:sqlserver 服务器主体 无法在当前安全上下文下访问数据库。于是在网上找了一下资料,发现是因为trustworthy数据库属性用于指明 SQL Server 实例是否信任该数据库以及其中的内容。默认情况下,此设置为 OFF,但是可以使用 ALTER DATABASE 语句将其设置为 ON。查看看到哪些数据库开了trustworthy属性,命令如下:SELECT name, database_id, is_trustworthy_on
阅读全文
sqlserver自带的导入导出工具,分别导入大批量mysql和oracle数据时的感受
摘要:sqlserver自带的导入导出工具,分别导入大批量mysql和oracle数据时,mysql经常出现格式转换出错,不好导入导入的数据量比较大时,还不如自己写个工具导入今天在导oracle时,想着也会像mysql一样麻烦,就没有试,直接写的工具,后来试试用它自带的导入导出工具时,发现比Mysql好用多了一能就完整的导入,格式也都能正确识别出,用着非常方便
阅读全文
sqlserver 2008 还原数据库时,提示有用户正在使用,无法取得使用占有权
摘要:sqlserver 2008 还原数据库时,提示有用户正在使用,无法取得使用占有权这个时候,只需要把数据库分离出去,再附加,然后还原即可分离数据库的时候能看到有几个数据连接
阅读全文
oracle 直接复制表内容到新表
摘要:不知道为什么,刚建的oracle数据库删除数据很慢,表里面有120多万数据,非常地慢于是采用的复制的方法,命令如下: create table students_backup as select * from students where 1=2;然后直接删除原表,再将新的表名字改成原来的
阅读全文
oracle 使用exp命令 sys用户登录 导出表存为dmp文件
摘要:在cmd下面,使用exp命令,格式为exp \"sys/123456@dbname as sysdba\" file=d:\dmp\test.dmp tables=sys.test其中红色部分的转义字符\",一定要加,要不然识别不出as
阅读全文
SqlServer添加触发器不让删除数据
摘要:触发器是:instead of delete 类型,注意了:instead类型的触发器相当于:DELETE命令过来后,直接走触发器中的代码,再往下,没有了……就是说,这个触发器会屏蔽掉你所有的DELETED命令。而只会执行一下触发器中的代码。如果你把这个触发器中的代码都注释掉,就相当于:屏蔽所有的DELETE命令。 Create trigger [dbo].[trg_del] on [dbo].[drv_user]instead of deleteASBEGINdeclare @cou intselect @cou=count(*) from deleted;if (@cou>0)RAI
阅读全文
SqlServer添加触发器死锁的原因
摘要:之前遇到过SqlServer添加触发器死锁的情况,纠结了很长时间最近发现原来是因为我在建表的时候,把id设成主键后,系统默认了加一个聚集的索引就是聚集索引把表锁住了
阅读全文
数据库中的表还是一定要建索引
摘要:上次说到在表中,加了触发器以后,会产生死锁的问题。后来又仔细再研究了一下,发现是没有对where条件面用到的字段建索引引起的,甚至连主键都没有定义。专门测试了一下没有建索引,每分钟处理3百条,对where条件里用到的字段建索引以后,每分钟3千条,提高了十倍。这真是一个低级错误。
阅读全文
Oracle客户端tnsnames.ora连接配置
摘要:Oracle客户端tnsnames.ora连接配置Oracle90的在C:\Oracle\ora90\network\ADMIN下面Oracel10g的在D:\oracle\product\10.2.0\db_1\network\ADMIN下面配置如下:RKK = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) (CONNECT_DATA = (SID = test) ) )主要就是ip和sid
阅读全文
sqlserver触发器引起的死锁问题
摘要:使用一个触发器,只是添加时才触发,目的为了限制ip三分钟发送一条短信,这个表某一段时间内访问频率非常之高,今天高峰时出现了死锁的情况可能是因为没有判断用户的原因,现在加上用户判断再观察一下,代码大概如下:ALTERtrigger[dbo].[trg_drv_yzm_insert]on[dbo].[drv_yzm]forinsertasbeginif(CURRENT_USER='testuser')begindeclare@lastcreatetvarchar(50)declare@lastdatedatetimedeclare@idint,@clientipvarchar(15
阅读全文
SQL Server 2008新建用户,并只给该用户读取、更新、删除,及修改表结构的权限
摘要:创建好用户后,几个需要赋权限的地方,写出来以备后用。1.在安全性用户属性中,登录用户的服务器角色为public2. 用户映射到数据的数据库角色成员身份为:db_owner和public,默认架构为dbo3. 状态为允许连接到数据引擎和登录在允许访问的数据库属性权限中,创建用户权限1.加上读取、更新、删除,2.加上控制和连接复制这两个,用户可以在sql server管理界面中直接连接,3.加上更改任意架构,用户可以修改表结构把其他的权限设为拒绝,这样他就只有读取、更新、删除,及修改表结构的权限
阅读全文
利用bat批处理,批量导入oracle的dmp格式的备份文件
摘要:oracle的可视化操作,一般都是借用PL/SQL。现在要把oracle的dmp格式的备份文件同时导进去,也只用使用他的命令了于是建了一个bat批处理文件,内容如下:sqlplus sys/sys用户密码@库 as sysdba @e:\import\d.sqlimp \"userid=db用户名/db密码 as sysdba\" full=y file=e:\import\ww_1.dmpimp \"userid=db用户名/db密码 as sysdba\" full=y file=e:\import\ww_2.dmpimp \"userid
阅读全文
怎么查看SQL SERVER 2000是否打过SP4的补丁
摘要:其实只要查询版本号就知道。在查询分析器中输入select @@version或者输入 print @@version如果是安装过SP4的补丁。应该是下面的信息:Microsoft SQL Server 2000 - 8.00.2039 (Intel X86)May 3 2005 23:18:38Copyright (c) 1988-2003 Microsoft CorporationEnterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 1)其他版本信息如下6.50.201 SQL Server 6.5 RTM6.50.21
阅读全文