SQL Server

MSSQL2005数据附加失败错误3456

解决办法:

1.新建一个同名的数据库(数据文件与原来的要一致)   
    
2.再停掉sql server(注意不要分离数据库)   
    
3.用原数据库的数据文件覆盖掉这个新建的数据库   
    
4.再重启sql server   
    
5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)   
    
6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用数据库的脚本创建一个新的数据库,并将数据导进去就行了。

企业管理器出现[MMC 无法创建管理单元]参考解决方案

当安装了Microsoft SQL Server 2005,然后又卸载SQL SERVER2005。结果在打开 SQLServer2000的 企业管理器,收到以下错误信息:MMC创建无法管理单元。

到网上寻找了以后,解决方法如下:

1. [开始]-->[运行] regedit   回车;

2. 找到以下注册表子项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\80\Tools\ClientSetup;

3. 如果有 SqlPath? 项且值为:“C:\Program Files\Microsoft SQL Server Server\80\Tools” ?,就直接跳到第7步;

3. 右键单击 ClientSetup 注册表子项, [新建]-->[字串值];

4. 重命名注册表子项,创建 SqlPath , 然后按 Enter;

在SQL Server 2005数据库中更改数据架构

数据库升级到 mssql 2005 了,我对 2005 不熟悉,发现还原 2000 的数据以前的用户名删除不了,报 Microsoft SQL Server错误: 15138?。
在网上找到:SQL Server 2005删除用户失败解决方法(15138错误)?
?Microsoft SQL Server错误: 15138删除对于用户失败,数据库主体在该数据库中拥有架构,无法删除。
删除 对于 用户“*****”失败。 (Microsoft.SqlServer.Smo)

其他信息:

执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)

sql里的update实现多表更新[转]

在 开发中,数据库来回换,而有些关键性的语法又各不相同,这是一件让开发人员很头痛的事情.本文总结了Update语句更新多表时在SQL Server,Oracle,MySQL三种数据库中的用法.我也试了SQLite数据库,都没成功,不知是不支持多表更新还是咋的. 在本例中: 我们要用表gdqlpj中的gqdltks,bztks字段数据去更新landleveldata中的同字段名的数据,条件是当 landleveldata 中的GEO_Code字段值与gdqlpj中的lxqdm字段值相等时进行更新.

php + mssql 中 like 不支持中文关键字查询

今天在做模糊查询时发现在 php + mssql + utf-8 中使用了中文就无数据返回,但是把 sql 句子输出直接到查询分析器里面执行是有数据返回的。由于涉及到中文所以第一时间就想到这是编码影响的,马上把关键字换为英文字母(当然字母是在字段记录中 存在的),就有数据返回。虽然找到原因了,但是解决问题过程中我还是郁闷了半天,我明明都把它们设为 utf-8 编码了,怎么还会出现这问题呢?问题是另外一个表,字段类型跟这个表是一样的,就有数据返回。

尝试了很多方法都无解后,就直接把关键字转了编码,LIKE '%" . iconv('utf-8', 'gbk', $keywords) . "%'" ,这样就成功返回数据了。看来 php 跟 mssql 还真是门不当户不对,我遇到的问题就多多的,加油换数据库吧!

 

php 读 mssql 的ntext 字段类型的问题

php + mssql 让真让人痛苦。这些读 php 读 mssql 的 ntext 字段类型问题又来了:当 ntext 的内容过长时,居然读不完整。
 
在网上找了很久,都是说 php 读 ntext 出错的,但没发现我的页面出错,就郁闷了。后来才查到是说 php 默认最大只能读 4K 的内容,原来是我的内容超过了 4K。修改方法如下:

除非同时指定了TOP,否则 ORDER BY子句在视图、内嵌函数、派生表和子查询中无效

在sql server 2000中,报错:”除非同时指定了 TOP,否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。“,如果实在要用 ORDER BY ,但是又不能指定确定的TOP数据时,怎么办呢?
解决方案:
使用 TOP 100 PERCENT ( SELECT TOP 100 PERCENT 字段 FROM 表 ORDER BY 排序字段)。
TOP 100 PERCENT相当于把记录数的100百之百SELECT出来。

ASP开发中存储过程应用详解[转自chinaz]

ASP开发中存储过程应用详解|调用,参数,存储,数据库,输出,编译,mycomm,输入,userid,代码
ASP 与存储过程(Stored Procedures)的文章不少,但是我怀疑作者们是否真正实践过。我在初学时查阅过大量相关资料,发现其中提供的很多方法实际操作起来并不是那么回 事。对于简单的应用,这些资料也许是有帮助的,但仅限于此,因为它们根本就是千篇一律,互相抄袭,稍微复杂点的应用,就全都语焉不详了。

现在,我基本上通过调用存储过程访问SQL Server,以下的文字都是实践的总结,希望对大家能有帮助。

SQL SERVER convert函数日期格式化应用[转]

Sql Server 中一个非常强大的日期格式化函数
Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16
Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06
Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06
Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06
Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06
Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06
Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46

sql查询中间固定条数的问题

今天在工作之中遇到了一个sql的问题,后来在经过网友的指点才弄出来

问题是这样子的:

我要在一个表中查出最后面添加的第3条到第6条数据,sql句子如下:

SELECT TOP 6
FROM 表
WHERE id NOT IN (SELECT TOP 2 id FROM 表 ORDER BY  id DESC)
ORDER BY  id DESC

订阅RSS - SQL Server