{S0}更新
请下载此工具的最新版本{A}。我有一些用户反馈的基础上更新此实用工具。
我补充的能力,选择您要复制的模式。对于大多数数据库,这将只是quot; dboquot;
我修正了一个错误的应用程序不承认有效版本的quot; System.Data.SqlServerCe.dllquot;简介
此实用程序将复制从一个普通的SQL Server 2000/2005数据库的架构和数据,并出口到SQL Server Compact Edition数据库。该工具支持3.1版或SQL Server精简版3.5。背景
我是一个移动应用程序和工作需要一个简单的方法来管理,而不必诉诸脚本的表关系和索引。我熟悉使用SQL Server Management Studio中,所以我决定,我会写一个实用工具,转换成一个普通的SQL Server数据库移动数据库。这样,我可以继续使用的工具,我通常用它来创建和维护数据库。使用代码
随意采取在看代码,并提供您最亲切的意见。应用程序使用一个向导穿行转换数据库。我也正常的WinForm转换,但我停下来代替此向导的发展,这样的形式是不完整的的。我将保持此代码,在我的博客写在关于它的更多。兴趣点
此实用程序将复制索引,主键,外键,表结构和数据。 SQL Server精简版不支持视图,触发器,也不存储过程,因此,此实用程序不会复制这些。历史1.0初始版本
See the end of this message for details
on invoking
just-in-time (JIT) debugging instead of
this dialog box.
************** Exception Text
**************
System.Reflection.TargetInvocationExcept
ion: Exception has been thrown by the
target of an invocation. --->
System.ArgumentException: Invalid value
for key 'locale identifier'. --->
System.FormatException: Input string was
not in a correct format.
at
System.Number.StringToNumber(String str,
NumberStyles options, NumberBuffer&
number, NumberFormatInfo info, Boolean
parseDecimal)
at System.Number.ParseInt32(String s,
NumberStyles style, NumberFormatInfo
info)
at
System.Data.SqlServerCe.ConStringUtil.Se
tIntType(String value, String key)
--- End of inner exception stack
trace ---
at
System.Data.SqlServerCe.ConStringUtil.Se
tIntType(String value, String key)
at
System.Data.SqlServerCe.ConStringUtil.Se
tLocale(Hashtable table)
at
System.Data.SqlServerCe.ConStringUtil.Ve
rifyValues(Hashtable values)
at
System.Data.SqlServerCe.ConStringUtil.Pa
rseConnectionString(String&
connectionString)
at
System.Data.SqlServerCe.SqlCeEngine.set_
LocalConnectionString(String value)
at
System.Data.SqlServerCe.SqlCeEngine..cto
r(String connectionString)
--- End of inner exception stack
trace ---
at
System.RuntimeMethodHandle._InvokeConstr
uctor(Object[] args, SignatureStruct&
signature, IntPtr declaringType)
at
System.RuntimeMethodHandle.InvokeConstru
ctor(Object[] args, SignatureStruct
signature, RuntimeTypeHandle
declaringType)
at
System.Reflection.RuntimeConstructorInfo
.Invoke(BindingFlags invokeAttr, Binder
binder, Object[] parameters, CultureInfo
culture)
at
System.RuntimeType.CreateInstanceImpl(Bi
ndingFlags bindingAttr, Binder binder,
Object[] args, CultureInfo culture,
Object[] activationAttributes)
at
System.Activator.CreateInstance(Type
type, BindingFlags bindingAttr, Binder
binder, Object[] args, CultureInfo
culture, Object[] activationAttributes)
at GLT.SqlCopy.WizardForm.DoCopy()
at
GLT.SqlCopy.WizardForm.UpdateWizard()
at
GLT.SqlCopy.WizardForm.btnNext_Click(Obj
ect sender, EventArgs e)
at
System.Windows.Forms.Control.OnClick(Eve
ntArgs e)
at
System.Windows.Forms.Button.OnClick(Even
tArgs e)
at
System.Windows.Forms.Button.OnMouseUp(Mo
useEventArgs mevent)
at
System.Windows.Forms.Control.WmMouseUp(M
essage& m, MouseButtons button, Int32
clicks)
at
System.Windows.Forms.Control.WndProc(Mes
sage& m)
at
System.Windows.Forms.ButtonBase.WndProc(
Message& m)
at
System.Windows.Forms.Button.WndProc(Mess
age& m)
at
System.Windows.Forms.Control.ControlNati
veWindow.OnMessage(Message& m)
at
System.Windows.Forms.Control.ControlNati
veWindow.WndProc(Message& m)
at
System.Windows.Forms.NativeWindow.Callba
ck(IntPtr hWnd, Int32 msg, IntPtr
wparam, IntPtr lparam)
************** Loaded Assemblies
**************
mscorlib
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433
(REDBITS.050727-1400)
CodeBase:
file:///C:/WINDOWS/Microsoft.NET/Framewo
rk/v2.0.50727/mscorlib.dll
----------------------------------------
GLT.SqlCopy
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase:
file:///C:/Documents%20and%20Settings/la
xmi/Desktop/SQL2005%20express%20ToSQLCom
pact%20Convert/GLT.SqlCopy.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433
(REDBITS.050727-1400)
CodeBase:
file:///C:/WINDOWS/assembly/GAC_MSIL/Sys
tem.Windows.Forms/2.0.0.0__b77a5c561934e
089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433
(REDBITS.050727-1400)
CodeBase:
file:///C:/WINDOWS/assembly/GAC_MSIL/Sys
tem/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433
(REDBITS.050727-1400)
CodeBase:
file:///C:/WINDOWS/assembly/GAC_MSIL/Sys
tem.Drawing/2.0.0.0__b03f5f7f11d50a3a/Sy
stem.Drawing.dll
----------------------------------------
Accessibility
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433
(REDBITS.050727-1400)
CodeBase:
file:///C:/WINDOWS/assembly/GAC_MSIL/Acc
essibility/2.0.0.0__b03f5f7f11d50a3a/Acc
essibility.dll
----------------------------------------
System.Configuration
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433
(REDBITS.050727-1400)
CodeBase:
file:///C:/WINDOWS/assembly/GAC_MSIL/Sys
tem.Configuration/2.0.0.0__b03f5f7f11d50
a3a/System.Configuration.dll
----------------------------------------
System.Xml
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433
(REDBITS.050727-1400)
CodeBase:
file:///C:/WINDOWS/assembly/GAC_MSIL/Sys
tem.Xml/2.0.0.0__b77a5c561934e089/System
.Xml.dll
----------------------------------------
Microsoft.SqlServer.Smo
Assembly Version: 9.0.242.0
Win32 Version: 9.00.4035.00
CodeBase:
file:///C:/WINDOWS/assembly/GAC_MSIL/Mic
rosoft.SqlServer.Smo/9.0.242.0__89845dcd
8080cc91/Microsoft.SqlServer.Smo.dll
----------------------------------------
Microsoft.SqlServer.ConnectionInfo
Assembly Version: 9.0.242.0
Win32 Version: 9.00.4035.00
CodeBase:
file:///C:/WINDOWS/assembly/GAC_MSIL/Mic
rosoft.SqlServer.ConnectionInfo/9.0.242.
0__89845dcd8080cc91/Microsoft.SqlServer.
ConnectionInfo.dll
----------------------------------------
System.Data
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433
(REDBITS.050727-1400)
CodeBase:
file:///C:/WINDOWS/assembly/GAC_32/Syste
m.Data/2.0.0.0__b77a5c561934e089/System.
Data.dll
----------------------------------------
Microsoft.SqlServer.SmoEnum
Assembly Version: 9.0.242.0
Win32 Version: 9.00.4035.00
CodeBase:
file:///C:/WINDOWS/assembly/GAC_MSIL/Mic
rosoft.SqlServer.SmoEnum/9.0.242.0__8984
5dcd8080cc91/Microsoft.SqlServer.SmoEnum
.dll
----------------------------------------
System.Transactions
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433
(REDBITS.050727-1400)
CodeBase:
file:///C:/WINDOWS/assembly/GAC_32/Syste
m.Transactions/2.0.0.0__b77a5c561934e089
/System.Transactions.dll
----------------------------------------
System.EnterpriseServices
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433
(REDBITS.050727-1400)
CodeBase:
file:///C:/WINDOWS/assembly/GAC_32/Syste
m.EnterpriseServices/2.0.0.0__b03f5f7f11
d50a3a/System.EnterpriseServices.dll
----------------------------------------
Microsoft.SqlServer.SqlEnum
Assembly Version: 9.0.242.0
Win32 Version: 9.00.4035.00
CodeBase:
file:///C:/WINDOWS/assembly/GAC_MSIL/Mic
rosoft.SqlServer.SqlEnum/9.0.242.0__8984
5dcd8080cc91/Microsoft.SqlServer.SqlEnum
.dll
----------------------------------------
Microsoft.SqlServer.BatchParser
Assembly Version: 9.0.242.0
Win32 Version: 2005.090.4035.00
CodeBase:
file:///C:/WINDOWS/assembly/GAC_32/Micro
soft.SqlServer.BatchParser/9.0.242.0__89
845dcd8080cc91/Microsoft.SqlServer.Batch
Parser.dll
----------------------------------------
System.Data.SqlServerCe
Assembly Version: 9.0.242.0
Win32 Version: 3.0.5300.0
CodeBase:
file:///C:/WINDOWS/assembly/GAC_MSIL/Sys
tem.Data.SqlServerCe/9.0.242.0__89845dcd
8080cc91/System.Data.SqlServerCe.dll
----------------------------------------
************** JIT Debugging
**************
To enable just-in-time (JIT) debugging,
the .config file for this
application or computer (machine.config)
must have the
jitDebugging value set in the
system.windows.forms section.
The application must also be compiled
with debugging
enabled.
For example:
<configuration>
<system.windows.forms
jitDebugging="true" />
</configuration>
When JIT debugging is enabled, any
unhandled exception
will be sent to the JIT debugger
registered on the computer
rather than be handled by this dialog
box.
if (col.DefaultConstraint != null && !String.IsNullOrEmpty(col.DefaultConstraint.Text))
{
// SQL Server CE 3.5 does not support function GETUTCDATE()
col.DefaultConstraint.Text = col.DefaultConstraint.Text.Replace("(getutcdate())", "(getdate())");
string def = col.DefaultConstraint.Text.Replace("((", "(").Replace("))", ")");
sb.Append(" DEFAULT ").Append(col.DefaultConstraint.Text);
//sb.Append(" DEFAULT (1) ");
}
我遇到的第二件事情上多列键的ForeignKey脚本创建的。只有第一次被引用的列包括有一个方括号中的问题。 // Check If Multi-Column Key's => Iterate Keys
string createFKSql = String.Empty;
if (sourceDb.Tables[fk.ReferencedTable].Indexes[fk.ReferencedKey].IndexedColumns.Count == 1)
{
// Single PK so use the original string
createFKSql = String.Format(fkSql, tbl.Name, fk.Name, "{0}", fk.ReferencedTable, sourceDb.Tables[fk.ReferencedTable].Indexes[fk.ReferencedKey].IndexedColumns[0].Name);
}
else if (sourceDb.Tables[fk.ReferencedTable].Indexes[fk.ReferencedKey].IndexedColumns.Count > 1)
{
// Multi-Column PK
createFKSql = String.Format(fkSql, tbl.Name, fk.Name, "{0}", fk.ReferencedTable, "{1}");
string referencedColumns = String.Empty;
foreach(IndexedColumn iCol in sourceDb.Tables[fk.ReferencedTable].Indexes[fk.ReferencedKey].IndexedColumns)
{
// Separate Columns including the square brackets
// to identify each referenced column.
if (referencedColumns.Length > 0)
referencedColumns = referencedColumns + "], [";
referencedColumns = referencedColumns + iCol.Name;
}
createFKSql = String.Format(createFKSql, "{0}", referencedColumns);
}
StringBuilder sbFk = new StringBuilder();
foreach (ForeignKeyColumn col in fk.Columns)
{
// Added square brackets to identify each column.
if (sbFk.Length > 0)
sbFk.Append("], [");
sbFk.Append(col.Name);
}
if (ver.FileMajorPart == 3 && ver.FileMinorPart == 5)
progressBar1.Maximum = Math.Max( value, max );
progressBar1.Value = Math.Min( value, max );