GVKun编程网logo

SQL Server 2005/2008 导入导出数据常见报错解决方法(sql2008导入数据总是失败)

4

最近很多小伙伴都在问SQLServer2005/2008导入导出数据常见报错解决方法和sql2008导入数据总是失败这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展JDBC连接Sq

最近很多小伙伴都在问SQL Server 2005/2008 导入导出数据常见报错解决方法sql2008导入数据总是失败这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展JDBC连接SqlServer数据库2000/2005/2008的区别、Microsoft SQL Server 2005数据导入导出处理、MSSQL/SQLSERVER 2000 2005 2008 2008R2 jar包驱动问题 一个sqljdbc4.jar就OK了、SQL Server 2000/2005/2008删除或压缩数据库日志的方法等相关知识,下面开始了哦!

本文目录一览:

SQL Server 2005/2008 导入导出数据常见报错解决方法(sql2008导入数据总是失败)

SQL Server 2005/2008 导入导出数据常见报错解决方法(sql2008导入数据总是失败)

数据库导入导出时总失败,错误信息如下: 正在验证 (错误) 消息
错误 0xc0202049: 数据流任务 1: 无法在只读列“ID”中插入数据。
(sql Server 导入和导出向导) 错误 0xc0202045: 数据流任务 1: 验证列元数据失败。
(sql Server 导入和导出向导) 错误 0xc004706b: 数据流任务 1: “组件“目标 - T_***”(34)”验证失败,返回的验证状态为“VS_ISbroKEN”。
(sql Server 导入和导出向导) 错误 0xc004700c: 数据流任务 1: 一个或多个组件未能通过验证。
(sql Server 导入和导出向导) 错误 0xc0024107: 数据流任务 1: 任务验证期间出错。 (sql Server 导入和导出向导) <FONT>解决方法:
导入导出向导,在“选择源表和源视图” 页,在导入导出的表打勾之后点击编辑映像,选择“启用标识列插入”即可

JDBC连接SqlServer数据库2000/2005/2008的区别

JDBC连接SqlServer数据库2000/2005/2008的区别

转载原文地址:http://blog.csdn.net/goustzhu/article/details/6198024

// Java Document  
package com.job36.test;  
import java.sql.*;  
public class connsql{  
    //1、连接SqlServer2000  
    //private String sDBDriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";  
    //private String url="jdbc:microsoft:sqlserver://localhost:1433;......";  
     
    //2、连接SqlServer2005  
    //driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver  
    //url=jdbc:sqlserver://localhost:1433;......  
     
    //3、连接SqlServer2008  
    //driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver  
    //url=jdbc:sqlserver://192.168.3.29:1433;......  
     
//以下为2008连接,事实上和2005连接一样的。都是用的jdbc1.2来完成的。  
    private String sDBDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver";  
    private String url="jdbc:sqlserver://192.168.3.29:1433;DatabaseName=crm";//Notice:DatabaseName  
    private String user="sa";  
    private String password="xxxx";//Notice: user and password.  
    Connection conn;  
    Statement stmt;  
    ResultSet rs;  
  
    public connsql()  
    {  
        try{  
            Class.forName(sDBDriver);  
        }  
        catch(java.lang.ClassNotFoundException e){  
            System.err.println("connsql():"+e.getMessage());  
        }  
    }  
    public void executeInsert(String sql){  
        try{  
            conn=DriverManager.getConnection(url,user,password);  
            stmt=conn.createStatement();  
            stmt.executeUpdate(sql);  
            stmt.close();  
            conn.close();  
        }catch(SQLException ex){  
            System.err.println("connsql.executeUpdate:"+ex.getMessage());  
        }  
    }  
public ResultSet executeQuery(String sql)  
{  
    try  
    {  
        conn = DriverManager.getConnection(url,user,password);  
        stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);  
        rs = stmt.executeQuery(sql);  
    }  
    catch(SQLException ex)  
    {  
        System.err.println("connsql.executeQuery:"+ex.getMessage());  
    }  
    return rs;  
}  
/*    public ResultSet executeQuery(String sql) 
    { 
        try{ 
            conn=DriverManager.getConnection (url,user,password); 
            stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); 
            rs=stmt.executeQuery(sql); 
            stmt.close();////////////////////////////I changed; 
            conn.close();////////////////////////////.......... 
        }catch(SQLException ex){ 
            System.err.println("connsql.executeQuery:"+ex.getMessage()); 
        } 
        return rs; 
    } 
*/    public void executeUpdate(String sql){  
        try{  
            conn=DriverManager.getConnection(url,user,password);  
            stmt=conn.createStatement();  
            stmt.executeUpdate(sql);  
            stmt.close();  
            conn.close();  
        }catch(SQLException ex){  
            System.err.println("connsql.executeQuery:"+ex.getMessage());  
        }  
    }  
    public void executeDelete(String sql){  
        try{  
            conn=DriverManager.getConnection(url,user,password);  
            stmt=conn.createStatement();  
            stmt.executeUpdate(sql);  
            stmt.close();  
            conn.close();  
        }catch(SQLException ex){  
            System.err.println("connsql.executeDelete:"+ex.getMessage());  
        }  
    }  
    public void closeStmt(){  
        try{  
            stmt.close();  
        }  
        catch(SQLException e){  
            e.printStackTrace();  
        }  
    }  
    public void closeConn(){  
        try{  
            conn.close();  
        }catch(SQLException e){  
            e.printStackTrace();  
        }  
    }  
     
    public static void main(String[] args) {  
        try {  
            connsql conn = new connsql();  
            ResultSet rs = conn.executeQuery("select top 10 * from muser");  
            while(rs.next())  
                System.out.println(rs.getString(1));  
            rs.close();  
            conn.closeStmt();  
            conn.closeConn();  
        } catch (SQLException e) {  
            e.printStackTrace();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
     
}



Microsoft SQL Server 2005数据导入导出处理

Microsoft SQL Server 2005数据导入导出处理

一、 Microsoft SQL Server 2005 数据导入导出,在网络上查找了很多资料,但基本上没有几个可以直接很直观的讲解。费了很大的劲才将 SQL Server 2005 的数据导入导出弄明白。 1 、首先说下,现在的生活中需要用到 SQL Server 2005 数据库的地方实在太多,工

一、microsoft sql server 2005 数据导入导出,在网络上查找了很多资料,但基本上没有几个可以直接很直观的讲解。费了很大的劲才将sql server 2005的数据导入导出弄明白。

1、首先说下,现在的生活中需要用到SQL Server 2005的地方实在太多,工作中经常碰到;特别是一些网络管理员好,或者是计算机爱好者等等。这里还是以网站数据导入为例

2、其次是,SQL Server 2005的可操作性是非常强的;相对Access数据库而言SQL Server 2005具有更好的安全性、稳定性、可操作性… Access数据库是入门级的数据库,在小型数据库中具有很好的表现;但是安全性、稳定性方面,当数据库文件不断增长Access就显得有点吃力了。所以在各类企业、公司在采用数据库时,很大程度上选择了SQL。

3、SQL的优点不用多说,但在初学者身上尤其上初次使用者很难对SQL做个很好的“诠释”。Access在网站中的可移动性是十分强的;而在SQL中网站的可移动性,就变得不是那么洒脱。

例如:网站迁移 Access网站可以直接将网站做整体备份,不需要单独对Access做任何处理,也不需要安装Access照样可以正常运行。在这方面SQL就显得有点力不从心;这时你必须对SQL Server 2005 做数据备份或者直接导出数据,当然也支持远程数据导出导入。

下面就说说如何对SQL Server 2005做数据导入导出处理(这里以导入为例)

选中“数据库”-“任务”-“导入数据(I)”;导出数据则在这里选择“导出数据(X)”

这一步选择好被导出的数据库文件,远程数据导出则在这里填好SQL数据库的远程地址、用户名和密码,再选择指定导出的数据库

MSSQL/SQLSERVER 2000 2005 2008 2008R2 jar包驱动问题 一个sqljdbc4.jar就OK了

MSSQL/SQLSERVER 2000 2005 2008 2008R2 jar包驱动问题 一个sqljdbc4.jar就OK了

今天遇到非常蛋疼的问题 如下:

 

我的系统主库是postgresql的 另外还连接了两个MSsql的数据库 先前客户说是2008R2的

我的系统会定时的去MSsql的数据库同步数据到postgresql

 

于是我在配置文件里面两个MSsql的配置都是

driver=com.microsoft.sqlserver.jdbc.sqlServerDriver url=jdbc:sqlserver://ip:port;database=dbname username=sa password=******


 

然后客户说有一台数据库的数据同步不了数据,并且数据库是MSsql2000的

 

我听到2000的第一反应就是以前数据库用2000的时候连接字符串和2005/2008的不一样

于是把连接字符串改成了

 

driver=com.microsoft.jdbc.sqlserver.sqlServerDriver url=jdbc:microsoft:sqlserver://ip:port;database=dbname username=sa password=******

 

然后我记得以前2000的jar包是有3个的

不知道我现在项目里用的这个sqljdbc4.jar能连接2000的数据库不

 

于是google搜 sqlserver2000 jar

转到了微软的

http://www.microsoft.com/en-us/download/details.aspx?id=1511

下载了一个README.TXT的文本

文本的大意是说不再提供sqlserver2000的jar下载了

然后给了一个新的下载地址

http://msdn.microsoft.com/data/jdbc

 

在里面我看到一jar支持 2000 2005 2008 2008R2

 

于是下载下来sqljdbc_3.0.1301.101_chs.tar.gz

解压后在目录发现有两个jar:

sqljdbc.jar  和 sqljdbc4.jar

这两个jar的区别在于

sqljdbc.jar 适合jre1.5的环境

sqljdbc4.jar适合jre1.6的环境

 

 

因为我是1.6 所以用sqljdbc4.jar

 

因为MSsql2000的数据连接是

com.microsoft.jdbc.sqlserver.sqlServerDriver

所以我用rar打开sqljdbc4.jar查看该jar的文件结构

但是发现com.microsoft 的路径下没有jdbc这个目录

只有sqlserver这个目录

 

我就奇怪了如果是没有jdbc这个目录,那么肯定2000是无法驱动的

然后一试 果然提示找不到驱动

 

我就纳闷了 微软不是说了此jar包支持2000 2005 2008 2008R2么

怎么不行呢...

 

纳闷了好久

然后突然想,会不会是2000 2005 2008 2008R2的连接字符串都是一样的了呢?

 

于是我把2000的链接字符串也改成


 

driver=com.microsoft.sqlserver.jdbc.sqlServerDriver url=jdbc:sqlserver://ip:port;database=dbname username=sa password=******

 

这样就对了

 

你妹的 原来是这样

 

 

大家伙如果有这个问题的切忌啊...

2000 2005 2008 2008R2的链接字符串都一样了 而且只需要一个jar包就行了


 

 

另外附上查看sqlserver2000的版本的方法

方法一:

在查询分析器中输入“Select @@Version”并运行,查看运行结果,对照便知版本。

8.00.194 -——————sql Server 2000 RTM
8.00.384 -——————(SP1)
8.00.534 -——————(SP2)
8.00.760 -——————(SP3)
8.00.2039 -——————(SP4) 

方法二:

运行sql SERVER服务管理器,在任务栏小托盘处,右键单击管理器图标,选“关于”,在弹出的窗口中,对照上面的信息便知

方法三:

在添加或删除程序中查看sql Server的支持信息,可直接查看到版本号(具体方法略)

补充说明:sql SERVER个人版,如果未打SP4补丁,是不会在1433端口监听的,即除本机外,其他电脑无法联入该数据库。

 

 

再附上一个把MSsql的表数据查询成 insert into格式的函数

 

USE [db] GO /****** Object: StoredProcedure [dbo].[proc_insert] Script Date: 12/05/2012 17:18:31 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER proc [dbo].[proc_insert] (@tablename varchar(256)) as begin set nocount on declare @sqlstr varchar(4000) declare @sqlstr1 varchar(4000) declare @sqlstr2 varchar(4000) select @sqlstr='select ''insert '+@tablename select @sqlstr1='' select @sqlstr2=' (' select @sqlstr1= ' values ( ''+' select @sqlstr1=@sqlstr1+col+'+'',''+',@sqlstr2=@sqlstr2+name +',' from (select case -- when a.xtype =173 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.length*2+2)+'),'+a.name +')'+' end' when a.xtype =127 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(20),'+a.name +')'+' end' when a.xtype =104 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(1),'+a.name +')'+' end' when a.xtype =175 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end' when a.xtype =61 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'convert(varchar(23),'+a.name +',121)'+ '+'''''''''+' end' when a.xtype =106 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.xprec+2)+'),'+a.name +')'+' end' when a.xtype =62 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(23),2)'+' end' when a.xtype =56 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(11),'+a.name +')'+' end' when a.xtype =60 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(22),'+a.name +')'+' end' when a.xtype =239 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''''''')' + '+'''''''''+' end' when a.xtype =108 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),'+a.name +')'+' end' when a.xtype =231 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''''''')' + '+'''''''''+' end' when a.xtype =59 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(23),2)'+' end' when a.xtype =58 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'convert(varchar(23),121)'+ '+'''''''''+' end' when a.xtype =52 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(12),'+a.name +')'+' end' when a.xtype =122 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(22),'+a.name +')'+' end' when a.xtype =48 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(6),'+a.name +')'+' end' -- when a.xtype =165 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),'+a.name +')'+' end' when a.xtype =167 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''''''')' + '+'''''''''+' end' else '''NULL''' end as col,a.colid,a.name from syscolumns a where a.id = object_id(@tablename) and a.xtype <>189 and a.xtype <>34 and a.xtype <>35 and a.xtype <>36 )t order by colid select @sqlstr=@sqlstr+left(@sqlstr2,len(@sqlstr2)-1)+') '+left(@sqlstr1,len(@sqlstr1)-3)+')'' from '+@tablename -- print @sqlstr exec( @sqlstr) set nocount off end


 Exec proc_insert NewDataTable;

 执行 Exec proc_insert TableName;

 

效果如下图所示

 

SQL Server 2000/2005/2008删除或压缩数据库日志的方法

SQL Server 2000/2005/2008删除或压缩数据库日志的方法

由 于数据库日志增长被设置为“无限制”,所以时间一长日志文件必然会很大,一个400G的数据库居然有600G的LOG文件,严重占用了磁盘空间。由于主要 是做OLAP,所以数据库本身不会有大变动,所以日志也就没有多少作用了,因此想办法把数据库日志文件收缩到很小或者删除。

网 上搜索相关解决方案后,得到的答案丰富多彩,但是真正管用的方案并不多,这里分享一个csdn上找到的方法。这个方法讲述了SQL Server 2005和SQL Server 2008在收缩数据库日志的不同之处,颇有帮助。同时,该方法的效率很高,收缩600G的日志到10M只花了不到30秒。

最后附上代码:

适用于SQL Server 2000的方法

DUMP TRANSACTION [jb51] WITH NO_LOG
BACKUP LOG [jb51] WITH NO_LOG
DBCC SHRINKDATABASE([jb51])

其中jb51为数据库名

适用于SQL Server 2005的方法

Backup Log [jb51] WITH no_log
GO
DUMP TRANSACTION [jb51] WITH no_log
GO
USE jb51 
DBCC SHRINKFILE (2)
GO

说明:由于SQL Server 2008对文件和日志管理进行了优化,所以以上语句在SQL2005中可以运行但在SQL2008中已经被取消。

USE[master]
GO
ALTER DATABASE jb51 SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE jb51 SET RECOVERY SIMPLE --简单模式
GO
USE jb51
GO
DBCC SHRINKFILE (N''DNName_Log'', 11, TRUNCATEONLY)

GO

USE[master]
GO
ALTER DATABASE jb51 SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE jb51 SET RECOVERY FULL --还原为完全模式
GO

其中jb51为数据库名,DNName_Log为日志名,需要找一下,具体的说明可以参考这篇文章,也有图文方法 https://www.jb51.net/article/136523.htm

这篇文章就介绍到这了,需要的朋友可以参考一下,希望大家以后多多支持。

您可能感兴趣的文章:
  • SQLServer清理日志文件方法案例详解
  • SQL SERVER 2008数据库日志文件收缩的方法
  • SQL Server无法收缩日志文件的原因分析及解决办法
  • SqlServer修改数据库文件及日志文件存放位置
  • SQL Server 2008 清空删除日志文件(瞬间日志变几M)
  • Sql Server 压缩数据库日志文件的方法

关于SQL Server 2005/2008 导入导出数据常见报错解决方法sql2008导入数据总是失败的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于JDBC连接SqlServer数据库2000/2005/2008的区别、Microsoft SQL Server 2005数据导入导出处理、MSSQL/SQLSERVER 2000 2005 2008 2008R2 jar包驱动问题 一个sqljdbc4.jar就OK了、SQL Server 2000/2005/2008删除或压缩数据库日志的方法等相关知识的信息别忘了在本站进行查找喔。

本文标签: