您的当前位置:首页正文

知识小结(SQLServer)

2020-11-09 来源:布克知识网

1)数据库中nvarchar()和nchar()的区别 在做SSIS项目中用到数据库字段类型为nchar()的与类型为nvarchar()去关联,但是一直关联不上,去数据库中查询也感觉没有问题,后面一看感觉nchar()后面的后面有很多空,update之后还是有空,后面把nchar()类型改为nvarch

1)数据库中nvarchar()和nchar()的区别

在做SSIS项目中用到数据库字段类型为nchar()的与类型为nvarchar()去关联,但是一直关联不上,去数据库中查询也感觉没有问题,后面一看感觉nchar()后面的值后面有很多空格,update之后还是有空格,后面把nchar()类型改为nvarchar()之后,SSIS就没有问题了,所有以后数据库设计中字段类型需要统一用narchar()

2)xp sp3安装Sqlserver2005的时候,运行安装程序就出错:

Summary.txt中只有:

Microsoft SQL Server 2005 9.00.4035.00
==============================
OS Version : Microsoft Windows XP Professional Service Pack 3 (Build 2600)
Time : Tue May 24 23:09:20 2011

解决办法:

1)由于系统中的Office是GOST进去的,下载office 2003完整版本,找到OWC11.MSI点击安装,对此进行修复操作后,再安装SQL Server 2005 成功

2)可能操作系统是克隆的,所以需要重新去安装系统。

3)SQLSERVER2005最好是安装在服务器的系统上才可以。

3)执行下面语句时

出现错误:

Conversion failed when converting from a character string to uniqueidentifier.

解决办法:'F4A552E9-B151-4098-BA52-F7F7A4EE82E'不是标准的GUID格式

4)Update的问题

想把一张表的一列更新到另外一张表中

报错,不支持,所以这样改:

5)2011-11-1碰到的SQL

更新表qirui中凡是float类型(typestat=0)的字段,而且字段中数据是99的那个值修改为该字段其它值得平均值

declare @sql varchar(max)
declare @t varchar(255)
set @t='qirui'

select @sql=isnull(@sql,'')+'update '+@t+' set ' +name+'=(select avg('+ name+') from dbo.qirui where '+ name +'<>99) where '+ name + '=99' 
from (
 select distinct name from syscolumns
 where id=object_id(@t) and typestat=0
 ) a 
 
exec(@sql)


6)sql 2005 pivot 行列互换

select* FROM StudentScore
PIVOT 
(
 SUM(Score) FOR Subject IN ([语文],[数学],[化学],[物理])
)
AS 
B 

7)打开“数据库关系图”提示:

此数据库没有有效所有者,因此无法安装数据库关系图支持对象。若要继续,请首先使用“数据库属性”对话框的“文件”页或ALTER AUTHORIZATION语句将数据库所有者设置为有效登录名,然后再添加数据库关系图支持对象。

解决办法:

执行以下命令:

ALTER AUTHORIZATION ON database::mydbname TO sa

8)下面的语句将返回位于TableA但是不位于TableB中的行,分析这两个表可以看出,TableA中只有coll为2的行在TableB中不存在,返回结果下表所示。

SELECT * FROM TableA

EXCEPT

SELECT * FROM TableB;

10)SQL Server 阻止了对组件 'Ole Automation Procedures' 的 过程'sys.sp_OACreate' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configur

sys.sp_OAMethod' of component 'Ole Automation Procedures

执行下面语句:

sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO


11)sqlserver 2008 日志收缩

USE DB_Satisfaction;
GO
-- Truncate the log by changing the database recovery model to SIMPLE.
ALTER DATABASE DB_Satisfaction
SET RECOVERY SIMPLE;
GO
-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE (DB_Satisfaction_Log, 10);
GO
-- Reset the database recovery model.
ALTER DATABASE DB_Satisfaction
SET RECOVERY FULL;
GO


12)卸载sqlserver 2008后重新安装时出现如下错误:

本地计算机 上的 SQL Server Analysis Services (MSSQL2008) 服务启动后又停止了。一些服务自动停止,如果它们没有什么可做的,例如“性能日志和警报”服务。

解决办法:

清除本机的应用程序日志即可


13)WIN8中SqlServer2008 32位,导入office2007 Excel文件,出现如下错误:

在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错)

解决办法:

USE [master] 
GO 
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0',N'AllowInProcess',1 
GO 
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0',N'DynamicParameters',1 
GO 
链接服务器——获取EXCEL数据


13)sqlserver 2008通过导sql脚本转换到sqlserver 2005后会出现中文不支持的情况


通过修改排序规则,修改为Chinese_PRC_CI_AS

alter database DB_MystatisInfoMazda collate Chinese_PRC_CI_AS


14)错误 1 命名空间“Microsoft.Practices.EnterpriseLibrary”中不存在类型或命名空间名称“Data”。是否缺少程序集引用?

VS2012打开VS2008项目时出现如上错误

造成这个错误的原因是因为工程属性中的目标框架,默认选项是“.NET Framework 4 Client Profile”, Client Profile是.NET Framework框架的子集,目标是为快速发布。但现在Enterprise Library 5.0似乎还需要Client Profile以外而完整版本包括的OracleClient相关的程序集,所以这里我们将目标框架其修改“.NET Framework 4.0”再进行编译,就可以通过了。


--SQL SERVER2008收缩日志方法

第一种办法

--1)
ALTER DATABASE DB_MystatisInfoPA_2014 SET RECOVERY SIMPLE --简单模式
GO
--2)右键-任务-收缩-文件-确定 下来数据库的日志只保留了1M

--3)
ALTER DATABASE DB_MystatisInfoPA_2014 SET RECOVERY FULL --还原为完全模式
GO


第二种办法:

--查询日志文件名称
--SELECT NAME, size FROM sys.database_files
USE [master]
GO
ALTER DATABASE DB_Satisfaction_FAW SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE DB_Satisfaction_FAW SET RECOVERY SIMPLE --简单模式
GO
USE DB_Satisfaction_FAW
GO
DBCC SHRINKFILE (N'DB_Satisfaction_log' , 11, TRUNCATEONLY)
GO
USE [master]
GO
ALTER DATABASE DB_Satisfaction_FAW SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE DB_Satisfaction_FAW SET RECOVERY FULL --还原为完全模式
GO


15)SQL Server 2008“阻止保存要求重新创建表的更改

如果强行更改会出现以下提示:不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的标进行了更改或者启用了“阻止保存要求重新创建表的更改”选项。

解决方法:

工具-〉选项-〉左侧有个 设计器-〉表设计器和数据库设计器 -> 阻止保存要求重新创建表的更改(右侧) 把钩去掉即可。


15)Sqlserver2008

checks 字段类型为float,checks 值为0.98

select * from wave_revise where checks >=0.98

查询不出来

select * from wave_revise where checks >=0.979999

查询的出来

解决方法:

select * from wave_revise cast(checks as decimal(18,2)) >=0.98

转换一下就可以查询出来了

16)数据库Sql server2008误操作数据库恢复

恢复数据库第三方工具:

Recovery for SQL Server

http://www.cnblogs.com/dudu/archive/2011/10/15/sql_server_recover_deleted_records.html


17)导入Excel文件时出现如下错误

“ExcelReader”的类型初始值设定项引发异常

未能加载文件或程序集MICROSOFT.OFFICE.INTEROP.EXCEL解决

未在本地计算机上注册 Microsoft.jet.oledb.4.0 提供程序

解决办法:

http://blog.fend.cn/archives/173.html

http://www.mycodes.net/78/6296.htm


18)浏览器兼容模式造成的如下错误

0x800a139e - JavaScript 运行时错误: Sys.ParameterCountException: 参数计数不匹配

解决办法:

这个是由于IE浏览器升级之后出现的问题,需要设置IE浏览器的兼容性模式,把网站添加进去

http://jingyan.baidu.com/article/15622f2472c112fdfcbea5e9.html

http://jingyan.baidu.com/article/466506580d9828f549e5f8d1.html

19)Sqlserver2008的数据库转为Sqlserver2005后需要调整字符

alter database DB_Satisfaction_FAW collate Chinese_PRC_CI_AS


Top