① 如何解決sql server 2012 評估期已過
如何解決sql server 2012 評估期已過
1、開始菜單找到sqlserver,打開sqlserver安裝中心如圖。
2、打開後進入點擊維護,然後點 版本升級
3、打開升級程序後,每項檢查完成都點擊下一步,直到輸入序列號。(網上可以找到序列號)輸入正確的序列號即可。
4、相關序列號(自個填上試,試不過說明版本不對,建議使用企業版 或 開發版):
MICROSOFT SQL SERVER 2012 企業核心版激活碼序列號:
FH666-Y346V-7XFQ3-V69JM-RHW28 MICROSOFT SQL SERVER 2012 商業智能版激活碼序列號:
HRV7T-DVTM4-V6XG8-P36T4-MRYT6 MICROSOFT SQL SERVER 2012 開發版激活碼序列號:
YQWTX-G8T4R-QW4XX-BVH62-GP68Y MICROSOFT SQL SERVER 2012 企業伺服器版/CAL版激活碼序列號:
748RB-X4T6B-MRM7V-RTVFF-CHC8H MICROSOFT SQL SERVER 2012 標准版激活碼序列號:
YFC4R-BRRWB-TVP9Y-6WJQ9-MCJQ7 MICROSOFT SQL SERVER 2012 WEB版激活碼序列號:
FB3W8-YRXDP-G8F8F-C46KG-Q998F
② 如何使用SQL Server命令BCP 導入導出EXCEL數據
SQL Server BCP 導入導出使用
Bcp 導出導入數據高效,比使用SQL Server Management Stdio 提供的資料庫導出導入要高效因為sql server 也沒有提供提供類似oracle的expdp和impdp的工具,如果用SQL Server Management Stdio提供的導入導出對大表數據進行遷移速度太慢了
Bcp 導出數據高效比較適用於大表數據的遷移
進入doc命令行輸入bcp命令,就彈出bcp命令的幫助信息:
C:\Users\wangwei>bcp
用法: bcp {dbtable | query} {in | out | queryout | format} 數據文件
[-m 最大錯誤數] [-f 格式化文件] [-e 錯誤文件]
[-F 首行] [-L 末行] [-b 批大小]
[-n 本機類型] [-c 字元類型] [-w 寬字元類型]
[-N 將非文本保持為本機類型] [-V 文件格式版本] [-q 帶引號的標識符]
[-C 代碼頁說明符] [-t 欄位終止符] [-r 行終止符]
[-i 輸入文件] [-o 輸出文件] [-a 數據包大小]
[-S 伺服器名稱] [-U 用戶名] [-P 密碼]
[-T 可信連接] [-v 版本] [-R 允許使用區域設置]
[-k 保留 Null 值] [-E 保留標識值]
[-h"載入提示"] [-x 生成 xml 格式化文件]
參數介紹:
bcp共有四個動作可以選擇。
(1) 導入。
這個動作使用in命令完成,後面跟需要導入的文件名。
(2) 導出。
這個動作使用out命令完成,後面跟需要導出的文件名。
(3) 使用SQL語句導出。
這個動作使用queryout命令完成,它跟out類似,只是數據源不是表或視圖名,而是SQL語句。
(4) 導出格式文件。
這個動作使用format命令完成,後而跟格式文件名。
下面介紹一些常用的選項:
-f format_file
format_file表示格式文件名。這個選項依賴於上述的動作,如果使用的是in或out,format_file表示已經存在的格式文件,如果使用的是format則表示是要生成的格式文件。
-x
這個選項要和-f format_file配合使用,以便生成xml格式的格式文件。
-F first_row
指定從被導出表的哪一行導出,或從被導入文件的哪一行導入。
-L last_row
指定被導出表要導到哪一行結束,或從被導入文件導數據時,導到哪一行結束。
-c
使用char類型做為存儲類型,沒有前綴且以"\t"做為欄位分割符,以"\n"做為行分割符。
-w
和-c類似,只是當使用Unicode字元集拷貝數據時使用,且以nchar做為存儲類型。
-t field_term
指定字元分割符,默認是"\t"。
-r row_term
指定行分割符,默認是"\n"。
-S server_name[ \instance_name]
指定要連接的SQL Server伺服器的實例,如果未指定此選項,bcp連接本機的SQL Server默認實例。如果要連接某台機器上的默認實例,只需要指定機器名即可。
-U login_id
指定連接SQL Sever的用戶名。
-P password
指定連接SQL Server的用戶名密碼。
-T
指定bcp使用信任連接登錄SQL Server。如果未指定-T,必須指定-U和-P。
-k
指定空列使用null值插入,而不是這列的默認值。
使用bcp導出數據
在控制台執行bcp:
bcp db_name.dbo.T_tablename out c:\a.txt -c -T
bcp db_name.dbo.T_tablename out c:\a.txt -c -Uusername -Pxxxxx
通過調用SQL Server的一個系統存儲過程xp_cmdshell以SQL語句的方式運行bcp:
exec master..xp_cmdshell 'bcp db_name.dbo.T_tablename out c:\a.txt -c -T' --"-T"信任連接
exec master..xp_cmdshell 'bcp db_name.dbo.T_tablename out c:\a.txt -c -Usa -Pxxxxx'
說明:
-T指定 bcp 使用網路用戶的安全憑據,通過信任連接連接到 SQL Server。不需要 login_id 和 password。
如果不是使用T需要加上-U和-P參數輸入用戶名和密碼
如果是本地導入導出可以不加-S參數,如果連接到遠程服務需要加-S參數
bcp db_name.dbo.tablename out d:\table.txt -c -q -S"120.26.76.220,1833" -U"sa" -P"password"
對要導出的表進行過濾。
bcp不僅可以接受表名或視圖名做為參數,也可以接受SQL做為參數,通過SQL語句可以對要導出的表進行過濾,然後導出過濾後的記錄。
EXEC master..xp_cmdshell 'bcp "SELECT TOP 20 * FROM db_name.dbo.T_tablename" queryout c:\table2.txt -c -U"sa" -P"password"'
bcp還可以通過簡單地設置選項對導出的行進行限制。
這條命令使用了兩個參數-F 2和-L 16,表示從SE
EXEC master..xp_cmdshell 'bcp "SELECT TOP 20 * FROM db_name.dbo.T_tablename" queryout c:\currency2.txt -F 2 -L 16 -c -U"sa" -P"password"'
SELECT TOP 20 * FROM db_name.dbo.T_tablename所查出來的結果中取第2條到16條記錄進行導出。
使用bcp導入數據
bcp可以通過in命令將bcp導出的文件導入到表中,首先需要創建表結構和導出數據的表結構相同
在控制台執行bcp:
bcp db_name.dbo.T_tablename in c:\a.txt-c -T
bcp db_name.dbo.T_tablename in c:\a.txt -c -Uusername -Pxxxxx
通過調用SQL Server的一個系統存儲過程xp_cmdshell以SQL語句的方式運行bcp:
exec master..xp_cmdshell 'bcp db_name.dbo.T_tablename in c:\a.txt-c -T' --"-T"信任連接
exec master..xp_cmdshell 'bcp db_name.dbo.T_tablename in c:\a.txt -c -Usa -Pxxxxx'
③ sql 2012 xp_cmdshell BCP 命令
驅動問題 驅動問題
④ SQLserver2012如何批量導出表格中的單條記錄到txt中
在SQL SERVER 2000裡面 有一個導入導出數據的嘛,你把要復制出來的數據選上,然後下一步就有復制到什麼地方,你就選擇EXCEL就可以進行操作了。
你試著做一下哈,應該沒有問題的!!!!!!!!!
⑤ SQL Server 用bcp命令將EXCEL表中的信息導入資料庫中,提示輸入欄位存儲類型,怎麼解決
SQL Server 用bcp命令將dat表中的信息導入資料庫
⑥ sql server bcp.exe問題
bcp.exe能獨立使用
但是要有一堆配套的玩意,配齊了還比較麻煩
所以你還不如安裝個SQL2000,這樣所有的環境都解決了。若是不用本地的SQL服務,停掉即可
⑦ sql server bulk insert 與bcp 哪個快
今天做了一個基於SQL Server的文本文件批量導入工具,和大家分享一下心得。
方案一:
遍歷文本文件,解析每一行,形成SQL語句後向資料庫插入。
方案二
遍歷文本文件,解析每一行,將SQL語句保存到文本文件然後執行。
方案三
使用SQL Server Bulk Insert 功能披露導入數據,然後在資料庫中做數據處理。
剛開始用方案一做的,50MB文本文件導入大約20-25分鍾,後來進行了優化,採用數據批量插入,性能提升不大。
繼續優化,使用多線程向資料庫中插入數據,性能提升10-20%左右,效果也不好。
方案二沒有完全測試,主要是生成SQL文件耗時15分鍾左右,不太理想。
最後使用BULK INSERT ,然後在資料庫中寫腳本對數據進行處理,50MB文件10秒即可導入
FQuery.SQL.Text := 'BULK INSERT LOGDATA FROM ' + QuotedStr(FFileName)
+ ' WITH (FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'', BATCHSIZE = 500)';
FQuery.ExecSQL;
最後執行大量的UPDATE語句,將數據格式化
建議在做大數據量導入的時候還是用BULK INSERT ,SQL SERVER 性能在那裡擺著,一個SQL 4ms,1000行就要4秒,根本快不了
測試java的insert 同使用9i以後的bulk Insert 的速度.
測試結果顯示通過bulk Insert 速度相當的快.
100000條記錄
insert ,---------------93秒
bulk insert -------------0.441秒
環境:
oracle 10.2.0.3 Windows 2000Server
java
代碼:
SQL> desc a
Name Type Nullable Default Comments
---- ------------ -------- ------- --------
ID INTEGER Y
NAME VARCHAR2(20) Y
bulk Insert 使用的類型及過程
create or replace type i_table is table of number(10);
create or replace type v_table is table of varchar2(10);
create or replace procere pro_forall_insert(v_1 i_table,v_2 v_table)
as
c integer;
begin
forall i in 1.. v_1.count
insert into a values(v_1(i),v_2(i));
end;
測試的java代碼:
public class testOracle {
public testOracle() {
Connection oraCon = null;
PreparedStatement ps = null;
Statement st = null;
ResultSet rs = null;
try {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException ex) {}
oraCon = DriverManager.getConnection("jdbc:oracle:thin:@192.168.15.234:1521:ora10g", "imcs","imcs");
oraCon.setAutoCommit(false);
} catch (SQLException ex) {
ex.printStackTrace();
}
CallableStatement cstmt = null;
oracle.sql.ArrayDescriptor a = null;
oracle.sql.ArrayDescriptor b = null;
if (1 == 1 )
{
Object[] s1 = new Object[100000];
Object[] s2 = new Object[100000];
for (int i = 0; i < 100000; i++) {
s1[i] = new Integer(1);
s2[i] = new String("aaa").concat(String.valueOf(i));
}
try {
a = oracle.sql.ArrayDescriptor.createDescriptor("I_TABLE", oraCon);
b = oracle.sql.ArrayDescriptor.createDescriptor("V_TABLE", oraCon);
ARRAY a_test = new ARRAY(a, oraCon, s1);
ARRAY b_test = new ARRAY(b, oraCon, s2);
cstmt = oraCon.prepareCall("{ call pro_forall_insert(?,?) }");
cstmt.setObject(1, a_test);
cstmt.setObject(2, b_test);
long aaaa = System.currentTimeMillis();
System.out.println(System.currentTimeMillis());
cstmt.execute();
oraCon.commit();
System.out.println(System.currentTimeMillis()-aaaa);
} catch (Exception e) {
e.printStackTrace();
}
}
else
{
try
{
PreparedStatement oraPs = null;
String oraInsertSql =
"insert into a values(?,?)";
oraPs = oraCon.prepareStatement(oraInsertSql);
long aaaa = System.currentTimeMillis();
System.out.println(System.currentTimeMillis());
for (int i = 0; i < 100000; i++)
{
oraPs.setInt(1,i);
oraPs.setString(2, new String("aaa").concat(String.valueOf(i)));
oraPs.executeUpdate();
}
oraCon.commit();
System.out.println(System.currentTimeMillis()-aaaa);
}
catch (SQLException ex)
{
System.out.print("dddddd");
System.out.print(ex.getMessage());
}
}
try {
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String args[]) {
testOracle a = new testOracle();
}
private void jbInit() throws Exception {
}
};
⑧ sql server 怎麼把數據導出來
目前主要提到了三種辦法,一種在程序中調用DTS,二種使用SQL SERVER帶的BCP功能,三種使用openrowset。
具體看下面:
這是利用BCP來做的,
使用SQLServer自帶的bcp命令——
bcp 資料庫名.dbo.表名 out 文件名 –c –q –S」伺服器名」 –U」用戶名」 –P」密碼」
bcp 」select 語句」 queryout 文件名 –c –q –S」伺服器名」 –U」用戶名」 –P」密碼」
導出整張表:
EXEC master..xp_cmdshell 'bcp "inter_custom.dbo.out_ck1" out c:\Temp.xls -c -q -S"PETER" -U"sa" -P"[email protected]"'
根據Query語句導出:
EXEC master..xp_cmdshell 'bcp "select * from inter_custom.dbo.out_ck1" queryout c:\Temp.xls -c -q -S"PETER" -U"sa" -P"[email protected]"'
利用bcp要求資料庫的伺服器名,資料庫用戶名和密碼,這些必須傳到程序中。方法可以有很多中,大概的例子,可以看:
http://www.cnblogs.com/kevin/archive/2004/09/21/45351.html
利用openrowset可以寫存儲過程,可以看下面的例子
引自CSDN的鄒建大大
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_exporttb]') and OBJECTPROPERTY(id, N'IsProcere') = 1)
drop procere [dbo].[p_exporttb]
GO
/*--數據導出EXCEL
導出查詢中的數據到Excel,包含欄位名,文件為真正的Excel文件
如果文件不存在,將自動創建文件
如果表不存在,將自動創建表
基於通用性考慮,僅支持導出標准數據類型
--鄒建 2003.10(引用請保留此信息)--*/
/*--調用示例
p_exporttb @sqlstr='select * from 地區資料'
,@path='c:\',@fname='aa.xls',@sheetname='地區資料'
--*/
create proc p_exporttb
@sqlstr varchar(8000),--查詢語句,如果查詢語句中使用了order by ,請加上top 100 percent
@path nvarchar(1000),--文件存放目錄
@fname nvarchar(250),--文件名
@sheetname varchar(250)=''--要創建的工作表名,默認為文件名
as
declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int
declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)
--參數檢測
if isnull(@fname,'')=''set @fname='temp.xls'
if isnull(@sheetname,'')='' set @sheetname=replace(@fname,'.','#')
--檢查文件是否已經存在
if right(@path,1)<>'\' set @path=@path+'\'
create table #tb(a bit,b bit,c bit)
set @sql=@path+@fname
insert into #tb exec master..xp_fileexist @sql
--資料庫創建語句
set @sql=@path+@fname
if exists(select 1 from #tb where a=1)
set @constr='DRIVER={Microsoft Excel Driver (*.xls)};DSN='''';READONLY=FALSE'
+';CREATE_DB="'+@sql+'";DBQ='+@sql
else
set @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 8.0;HDR=YES'
+';DATABASE='+@sql+'"'
--連接資料庫
exec @err=sp_oacreate 'adodb.connection',@obj out
if @err<>0 goto lberr
exec @err=sp_oamethod @obj,'open',null,@constr
if @err<>0 goto lberr
--創建表的SQL
declare @tbname sysname
set @tbname='##tmp_'+convert(varchar(38),newid())
set @sql='select * into ['+@tbname+'] from('+@sqlstr+') a'
exec(@sql)
select @sql='',@fdlist=''
select @fdlist=@fdlist+',['+a.name+']'
,@sql=@sql+',['+a.name+'] '
+case
when b.name like '%char'
then case when a.length>255 then 'memo'
else 'text('+cast(a.length as varchar)+')' end
when b.name like '%int' or b.name='bit' then 'int'
when b.name like '%datetime' then 'datetime'
when b.name like '%money' then 'money'
when b.name like '%text' then 'memo'
else b.name end
FROM tempdb..syscolumns a left join tempdb..systypes b on a.xtype=b.xusertype
where b.name not in('image','uniqueidentifier','sql_variant','varbinary','binary','timestamp')
and a.id=(select id from tempdb..sysobjects where name=@tbname)
if @@rowcount=0 return
select @sql='create table ['+@sheetname
+']('+substring(@sql,2,8000)+')'
,@fdlist=substring(@fdlist,2,8000)
exec @err=sp_oamethod @obj,'execute',@out out,@sql
if @err<>0 goto lberr
exec @err=sp_oadestroy @obj
--導入數據
set @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=YES
;DATABASE='+@path+@fname+''',['+@sheetname+'$])'
exec('insert into '+@sql+'('+@fdlist+') select '+@fdlist+' from ['+@tbname+']')
set @sql='drop table ['+@tbname+']'
exec(@sql)
return
lberr:
exec sp_oageterrorinfo 0,@src out,@desc out
lbexit:
select cast(@err as varbinary(4)) as 錯誤號
,@src as 錯誤源,@desc as 錯誤描述
select @sql,@constr,@fdlist
go
從DataGrids中導出數據到Excel
DataSet結果導出到Excel
Export DataSets to Excel...
導出到Excel的四種方法
關於從net程序如何導出到excel微軟的msdn有專門的講述,在上面可以搜到。
⑨ SQL server2012怎麼備份資料庫
本文介紹SQL server如何備份資料庫
材料/工具
sqlserver2008
方法
1、選中要備份的資料庫,右擊-->任務-->備份