分类 "Sql-Mysql" 的存档.

全文操作运行失败。查询子句只包含被忽略的词.noise.chs 这是一个只读文档

sql server 2000 全文检索中遇到问题:
错误一、全文操作运行失败。查询子句只包含被忽略的词。

这是由于在MssqlFtdataSqlserverConfig 中提供了多种语言的干扰词列表,在安装带有全文检索支持的 Microsoft SQL Server 时会创建这个目录,并同时安装干扰词文件。干扰词文件可以编辑。
Read more…

Asp调用存储过程,command.CreateParameter 参数值的类型说明

Asp调用各种存储过程,包括带参数,无参数,输入输出参数,带返回值等。

1,调用没有参数的存储过程
<%
set conn=server.CreateObject(“adodb.connection”)
set cmd=server.CreateObject(“adodb.command”)
strconn=”dsn=pubs;uid=sa;pwd”

conn.Open strconn
set cmd.ActiveConnection=conn

cmd.CommandText=”{call nono}”

‘set rs=cmc.exe 或者cmd.execute

set rs=cmd.Execute()

%>
Read more…

err.number -2147217900错误,SQL数据库 ‘XXX’ 的日志已满。请备份该数据库的事务日志以释放一些日志空间

今天一早,一到公司,被同事告知内部的一个数据库系统发生了问题,更新数据的时候提示失败。
于是开始着手处理,先是找到发生错误的地方,使用输出语句输出了错误Err.number,错误代码为-2147217900,然后又输出了发生错误的SQL语句,复制到查询分析器中执行,被告知错误为:数据库 ‘XXX’ 的日志已满。请备份该数据库的事务日志以释放一些日志空间。
原来是事务日志已满。
解决办法:
Read more…

SQL Server建立全文索引–简单描述,不累赘

需要SQL Server 2000 及其以后的版本才支持~~

其实非常简单的,不用再额外安装什么插件。

首先,确认 SQL Server 2000 的全文检索功能可用,最简单的方法就是在企业管理器中,随便打开一个数据库到表,随便选中一个表,右键–查看 “全文索引表”选项是否为灰色,若为灰色,则此功能尚未开启,如已经可选,跳过下步。

开启全文检索功能:功能的关闭主要是是SQL Server 2000 的全文检索服务关闭了,需要在 我的电脑 上右键—管理—服务,找到 Microsoft Search,右键启动,最好修改其属性,再设置启动类型为自动。然后在查询管理器中 运行 execute sp_fulltext_database 'enable' ,再去企业管理器中右键查看,就会发现已经可以使用SQL Server 2000 的全文检索了(如果在服务中找不到此服务,就是该服务并未安装,需要安装后再开启)。

Read more…

Sql Server 使用正则表达式Regular进行内容替换

例句:

<p>全部纳入鲜活<span id=stock_sz000061>农产品</span><span id=quote_sz000061></span>运输绿色通道网络范围,对整车合法装载运输鲜活农产品车辆免收车辆通行费;享受免收鲜活农产品通行费的农产品新增土豆等4个品种。</p>

现在在这个句子有含有没有用处的span标签,我们需要使用sql语句替换掉这些标签,最后达到这样的效果:

<p>全部纳入鲜活农产品运输绿色通道网络范围,对整车合法装载运输鲜活农产品车辆免收车辆通行费;享受免收鲜活农产品通行费的农产品新增土豆等4个品种。</p>

首先需要做如下操作,使SQL支持正则表达式.

1.下载支持所需的文件 sql_xp_regular.7z

2.复制 xp_pcre.dllProgram FilesMicrosoft SQL ServerMSSQLbinn 目录下;

3.运行安装脚本 INSTALL.SQL;

4.然后就可以使用啦,主要有若干function及以下6个SP:

  • xp_pcre_match
  • xp_pcre_match_count
  • xp_pcre_replace
  • xp_pcre_format
  • xp_pcre_split
  • xp_pcre_show_cache

我们使用function 这样进行替换:

Read more…

SQL Server 中使用正则表达式Regular

来源: http://www.codeproject.com/KB/database/xp_pcre.aspx

An Extended Stored Procedure to use regular expressions in T-SQL.
一个使用正则表达式的存储过程.

存储过程下载地址:

Download source and DLL – 219 Kb

Sql Server 不如Oracle,自带正则表达式,不过还是有办法实现的。使用这个SP就可以啦。

使用方法:

1.复制 xp_pcre.dll Program FilesMicrosoft SQL ServerMSSQLbinn 目录下;

2.运行安装脚本 INSTALL.SQL;

3.然后就可以使用啦,主要有以下6个SP:

  • xp_pcre_match
  • xp_pcre_match_count
  • xp_pcre_replace
  • xp_pcre_format
  • xp_pcre_split
  • xp_pcre_show_cache

————————————————————–

Read more…

从csv格式文件导入到sql server 2005

从csv格式文件导入到sql server 2005 :

USE 数据库名
BULK Insert dbo.表名
From 'D:test.csv'
WITH (
FIELDTERMINATOR = ',', --字段分隔符
ROWTERMINATOR = 'n' --换行符
)

就是so easy….

Excel文件导入到SQL,文本、数字丢失,变成NULL的处理

导入一个Excel到Sql,好方便进行数据的筛选,但是却发现,在导入后,电话字段有很多数据丢失,变成了Null,经过仔细检查,发现丢失的都是包含有字符型的(如区号与号码之间的-),再查看一下导入后的sql表,电话所在字段类型为float类型~~~难怪会有很多数据丢失了。。
将Excel中的该列单元格格式改为 文本 格式,再导入,已经不行。

搜索一番,发现有一个方法,不过这个方法只针对于完全数字格式的字段,如若想导入的是数字格式,而非字符串格式,就需要这样的做法:

Excel导入数据到Sql Server

Excel导入数据到Sql Server

1、将导入的过程存为DTS包,将此DTS包找到

2、在刚才保存的DTS包上右键,编辑包

3、在编辑器里右键单击空白处,选择“脱接属性”命令。

4、依次展开“连接”——excel的那个连接——>“OLE DB属性“,找到“Extended Properties”属性。

5、将右边的“Value”属性的值改为“Excel 8.0;HDR=YES;IMEX=1”

Read more…

单用户模式还原/恢复matser数据库

在恢复master的备份时要注意:必须在单用户(single user)模式下进行
a.进入单用户模式的方法:
首先,在命令行模式下输入sqlservr -c -f -m或者输入sqlservr -m
其中:-c 可以缩短启动时间,SQL Server不作为Windows NT的服务启动;
-f 用最小配置启动SQL Server;
-m 单用户模式启动SQL Server。
也可以在控制面板-服务-MSSQLServer的启动参数中输入-c -f -m或者输入-m,点击开始
其次,进行master数据库的恢复
a.直接进入查询分析器,有个提示不要理会它。输入恢复语句进行数据库恢复:
RESTORE   DATABASE   master   from   disk=’具体的备份文件路径和文件名’
b.或者用这个,在命令提示符下输入,注意大小写
使用”windows身份验证”的,输入:isql   /E
使用”sql   server和windows身份验证”的,输入:isql /U”用户名” /P”密码”
然后在出现的提示符下输入(注意1>,2>是提示符):
1>RESTORE DATABASE master from disk=’c:具体的备份文件名’
2>go

sql列变行 活用游标实现列数据变行数据

本来是mysql数据库的,不过对mysql数据库的游标实在是不熟,所以先把数据导到了mssql 上,才进行了处理.

首先,通过联合两个表时,查询得到的是如下的数据
其中各个属性名称都在 “属性”列中,值在其对应的值列中;

sql图1

现在需要将各个属性名称放到行中,最后到处结果到excel中。

所以需要进行处理,经过思考,我觉得只有用游标才可以实现,所以使用游标进行了处理,最后处理出的结果如下:

所使用的游标代码如下(为了安全考虑,替掉了真实的表名):

————————————————————————–
Declare @tmpIdent int;
Declare @tmpidentv varchar(20);
declare @tmpName varchar(100);
declare @tmpEmail varchar(100);
declare @tmpType varchar(100);
declare @tmpVar varchar(100);
declare @tmpvalue varchar(100);

CREATE  TABLE #tmp_cioall
(
ident int,
[name] varchar(128),
email varchar(128),
user_type varchar(128),
emailaddress varchar(128),
Gender varchar(128),
industry varchar(128),
jobtitle varchar(128),
organisation varchar(128),
town varchar(128),
birth_date varchar(128),
minibio varchar(128),
skills varchar(128),
interests varchar(128),
mainproject varchar(128),
jobdescription varchar(200)
);

declare cur1 CURSOR FOR SELECT  b.ident,b.name,b.email,b.user_type,a.name as 属性名,cast(a.value as varchar) as 值 FROM t1 a,t2 b where a.owner=b.ident order by b.ident asc;
Open cur1
Fetch next From cur1
Into @tmpIdent,@tmpName,@tmpEmail,@tmpType,@tmpVar,@tmpvalue

While(@@Fetch_Status = 0)
Begin
begin
if not exists (select * from #tmp_cioall where ident=@tmpIdent) begin
insert into #tmp_cioall(ident,[name],email,user_type) values(@tmpIdent,@tmpName,@tmpEmail,@tmpType)
end
else
begin
set @tmpidentv=cast(@tmpIdent as varchar(20))
exec (‘update #tmp_cioall set ‘+ @tmpVar+’=isnull(”’+@tmpValue+”’,””) where ident=’+@tmpidentv+”)
end
–end if
end

Fetch next From cur1
Into @tmpIdent,@tmpName,@tmpEmail,@tmpType,@tmpVar,@tmpvalue
End
Close cur1
Deallocate cur1

select ident,[name] as 姓名,email as 邮箱,user_type as 用户类型,Gender as 性别,industry as 行业, jobtitle as 头衔,organisation as “公司/组织”,town as 城市,minibio as 简单介绍,skills as 技能, interests as 爱好,mainproject as 曾经主持过的IT项目,birth_date as 生日,jobdescription as 工作描述 from #tmp_cioall

drop table #tmp_cioall