2011年9月

[转]详解SQL Server的两个存储过程:sp_MSforeachtable/sp_MSforeachdb

1.简介:
作为DBA会经常需要检查所有的数据库或用户表,比如:检查所有数据库的容量;看看指定数据库所有用户表的容量,所有表的记录数...,我们一般处理这样的问题都是用游标分别处理处理,比如:在数据库检索效率非常慢时,我们想检查数据库所有的用户表,我们就必须通过写游标来达到要求;如果我们用sp_MSforeachtable就可以非常方便的达到相同的目的:EXEC sp_MSforeachtable @command1="print '?' DBCC CHECKTABLE ('?')"
系统存储过程sp_MSforeachtable和sp_MSforeachdb,是微软提供的两个不公开的存储过程,从mssql6.5开始。存放在SQL Server的MASTER数据库中。可以用来对某个数据库的所有表或某个SQL服务器上的所有数据库进行管理,后面将对此进行详细介绍。

- 阅读剩余部分 -

[转]SQL Server 跨库复制表数据的解决办法

跨库复制表数据,有很多种方法,最常见的是写程序来批量导入数据了,但是这种方法并不是最优方法,今天就用到了一个很犀利的方法,可以完美在 Sql Server 2005 和 Sql Server 2008 中执行!
格式如下:

insert into tableA
SELECT * FROM
OPENDATASOURCE('SQLOLEDB', 'Data Source=127.0.0.1;User ID=sa;Password=sasasa').databaseName.dbo.tableB

- 阅读剩余部分 -

fsockopen返回gzip内容无法gzdecode解压的问题

#1.返回头Transfer-Encoding: chunked表明是chunked的传输编码
这个意思是,服务器分批把http body返回给你,比如http body如下
2 --表示下一个chunked的长度为2,这个数字是16进制,不是10进制
ab -- 长度为2的串
3 -- 同上
abc -- 长度为3的串
1 -- 同上
a -- 长度为1的串
0 -- 长度为0,这个是结束标识

所以最终的http body应该是ababca ,长度标识是不需要的。

- 阅读剩余部分 -