microsoft sql server 2008数据库恢复到2005(版本降级)
实例:一个mssql 2008的数据库备份,要还原到2005上,本来以为备份时把数据库兼容级别为2005或2000、再备份,就可以还原到2005上,但事实上不行。
通过google找到了一个办法,有点麻烦,但还是可以比较完美还原的。
高版本上导出兼容在低版本上的创建数据库结构的的sql脚本,拿到低版本上执行,创建数据库及表结构,然后使用导入数据功能,从高版本上导入到低版本上。导入时,要对每个表勾选“启用标识插入”。
具体来说:
mssql manger studio 打开”对象资源管理器”(没有的话按F8), 连接到待备份的数据库,在待备份的数据库上点右键 – 任务 -生成脚本[……]
php函数mult_iconv:转换任意维数组的字符集编码(扩展iconv函数功能)
php的iconv函数只支持对字符串的转换编码,如果是数组,就要自己遍历转换了,因此写如上的函数,对任意维数组进行转换,同时转换下标(索引)及值。
注意:不转对象。
function mult_iconv($in_charset,$out_charset,$data)
{
if(substr($out_charset,-8)=='//IGNORE'){
$out_charset=substr($out_charset,0,-8);
}
if(is_array($data)){
foreach($data as $key[......]
php+MSSQL的坑:(n)varchar型字段被截断
很自虐的搭配php+MSSQL,太多的坑,就不说text型被截断了。
受限于现有的asp+mssql应用,新增的部分功能使用php开发。对一个表的读写,后台使用asp,读写都很正常。前台一个调用是php写的,但就是遇到一个诡异的问题,要对数据做一个很复杂的解析处理,结果是数据丢失一部分。一层一层的输出,最后才发现是从数据库读出来了数据就不完整,这可奇怪了。又不是text型的数据,加了ini_set()修正text型默认长度限制,也不行。
但被截断长度很奇怪,恰恰是254个字节,似乎正好是较老的mssql里varchar()的默认最大长度;而该字段的实际是varchar(1000);[……]
parted打开磁盘报错Invalid partition table on /dev/sdx — wrong signature 0/gparted显示硬盘未分区
因为硬盘空间不足,所以对其中一个分区进行扩容(当然,本磁盘有空闲的空间才能扩容),使用gpared,以前的经验是本分区工具非常稳定,无损的分区调整。不过这次把一个swap分区往后移动时,报错了,分区调整失败。,gparted重新载入磁盘,但显示磁盘没有分区,所以分区都不见了。
这下麻烦了,不过在gome磁盘实用工具里还是正常的,其它分区也都能正常工作。然而gparted里显示有误,总令人不安心。
到windows里,使用diskgen也没有查出分区表有错误。再回到centos里,gparted仍没有分区。使用parted命令行工具,看到了如标题里的一行错误消息:
Invali[……]
php5.3下安装ms sql server函数库
参考
http://docs.moodle.org/22/en/Installing_MSSQL_for_PHP
附件:
DBLIB_TS_for_php5.3.x
DBLIB_NOTS_for_php5.3.x
DBLIB_TS_for_php5.2.x
DBLIB_NOTS_for_php5.2.x[……]
折腾:vps上php环境升级为php5.5
php5.5出来很久了,一直没应用,vps上还是5.3,折腾一番尝试一下看5.5效果如何。
查阅了官方的升级说明,从5.3到5.5变化不大,而且vps上主要跑的wordpress,drupal,phpmyadmin等应用,它们的开发理论是是比较规范的,估计问题不大。
原环境,php-fpm, nginx, 其中php安装了apc, memcache两个附加模块。
下载php5.3源码,解压,参考5.3的配置参数,改了下安装目录到/usr/local/php55,编译安装,很顺利。
不过启动php-fpm进程时,还得加 -c参数指定php.ini目录才行,指定该参数重新配[……]