Nasıl SQL Server Compact Edition 4.0 dağıtmak için?
Nasıl Microsoft SQL Server Compact 4.0 dağıtmak?
SQL Server Compact Edition (şu anda sürüm 4.0)
yazılım geliştiricileri inşa Windows için kullanabileceğiniz ücretsiz, gömülü bir veritabanı masaüstü uygulamaları. Küçük bir ayak izi vardır ve klasör içinde ikili özel dağıtım destekler.
Ama bunu gerçekten dağıtmak mı?
- Microsoft yazıyorolabilirdeployed within the application folder (good) and supports xcopy deployment.
- Microsoft da bunu söylüyorolamazdeployed within the application folder (bad), and does not support xcopy deployment.
- bazı insanlar examples of it using simple xcopy deployment ama detayları dağıtımı tamamlamak için gerekli içine gitmiyorlar
Bu sorun, Kayıt Olmadan ADO OLEdb Sağlayıcısı kullanın. OLEdb Sağlayıcısı kayıt yönetici olarak yapılmalıdır. SQL Server Compact edition yönetici olmayan kullanıcılar ile başarısız olacaktır.
SQL Server Compact 4.0 redist_enu.txt
Bir dosya ile geliyor:
Bu listelenmiştir .exe dosyaları, hedef bilgisayarda belirli bir konuma kapalı bileşenlerini yükleyin. Bu bakım ve teknik destek sağlamak için yardımcı olur. .dll dosyaları bu içine alınmış .exe dosyaları da ayrı ayrı bu redist.txt mevcuttur. Ancak, bu dağılımları ayrı .DLL servis sorunlara neden olabilir. Daha fazla bilgi için, lütfen http://go.microsoft.com/fwlink/?LinkId=94589 bkz
Kırıntı ile özel dağıtım algılama: Derleme yoluyla SQL Server Compact Meclisi yığını ve açık sadece yerel yükleme Özel dağıtım.() LoadFrom, .yerel dosya veya DLL/COM yeniden yönlendirme stratejileri kullanımı desteklenmez ve servis sorunlara neden olabilir. Daha fazla bilgi için http://support.microsoft.com/kb/835322 http://msdn2.microsoft.com/en-us/library/aa375142.aspx bkz
Microsoft SQL Server Compact 4.0
SSCERuntime_x86-ENU.exe
SSCERuntime_x86-DEU.exe
SSCERuntime_x86-FRA.exe
SSCERuntime_x86-JPN.exe
SSCERuntime_x86-RUS.exe
SSCERuntime_x86-ESN.exe
SSCERuntime_x86-ITA.exe
SSCERuntime_x86-KOR.exe
SSCERuntime_x86-CHT.exe
SSCERuntime_x86-CHS.exe
SSCERuntime_x64-ENU.exe
SSCERuntime_x64-DEU.exe
SSCERuntime_x64-FRA.exe
SSCERuntime_x64-JPN.exe
SSCERuntime_x64-RUS.exe
SSCERuntime_x64-ESN.exe
SSCERuntime_x64-ITA.exe
SSCERuntime_x64-KOR.exe
SSCERuntime_x64-CHT.exe
SSCERuntime_x64-CHS.exe
sqlcese40.dll
sqlceqp40.dll
sqlceoledb40.dll
sqlceca40.dll
sqlceme40.dll
sqlcecompact40.dll
sqlceer40en.dll
sqlceer40cn.dll/sqlceer40zh-CHS.dll
sqlceer40de.dll
sqlceer40es.dll
sqlceer40fr.dll
sqlceer40it.dll
sqlceer40ja.dll
sqlceer40ko.dll
sqlceer40tw.dll/sqlceer40zh-CHT.dll
sqlceer40ru.dll
Sistem.Data.SqlServerCe.dll
Sistem.Data.SqlServerCe.Entity.dll
ama SQL Server Compact 4.0 yeniden nasıl hakkında herhangi bir bilgi vermez.
Rastgele 7 DLL buldum Program Files
belgesiz klasörü spellunking civarında
C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\
sqlceoledb40.dll
sqlceqp40.dll
sqlcese40.dll
sqlceca40.dll
sqlcecompact40.dll
sqlceer40EN.dll
sqlceme40.dll
Not:Ayrıca daha fazla DLL ile bazı alt klasörler vardır
bir klasöre bu 7 dll kopyalama denedim ve ADO Connection the connection string kullanımı: bir açmak için çalıştı
Provider=Microsoft.SQLSERVER.CE.OLEDB.4.0;Data Source="store.sdf"
ama 0x80004005 Unspecified error
ile başarısız olur
CEVAP
çözüm yarattım.
SQL Server Compact Edition DLL 7: oluşur
sqlceme40.dll
belgesiz, yerli, düz API kitaplığı (.System.Data.SqlServerCe.dll
kurul, bu dll etrafında bir sarıcı net)sqlceca40.dll
Engine
,Replication
,Error
ve diğer birkaç COM nesneleri uygulayan BİR COM dllsqlceoledb40.dll
SSCE (ADO kullanımına izin veren) için bir OLEdb Sağlayıcısı kullanan BİR COM dllsqlcese40.dll
bilinmeyensqlceqp40.dll
bilinmeyensqlcecompact40.dll
bilinmeyensqlceer40en.dll
bilinmeyen
Sadece bu DLL gemi için çalışıyor ile sorun iki kişilerCOMnesneler. COM dll için gereken nesnekayıtlıörneğin:
>regsvr32 sqlceca40.dll
>regsvr32 sqlceoledb40.dll
Bu sorun, bir COM nesnesi kaydı gerektiriryönetimayrıcalıklar (using a global solution to solve a local problem). Bu kullanıcılar anlamına gelir
- gerekyükleyinuygulama yapmak istemiyorum
- kullanıcılara yönetici izinleri yapmak istemiyorum) olması gerekir
Neyse ki, Windows XP ile birlikte 2001 yılında başlayan Microsoft, bu Ortak sorun çözüldü: Registration-Free COM.
İlk olarak, size bir uygulama olduğunu ilan edeceksiniz< . em^"" . bağımlılığın SQL Server Compact Edition 4.0. Bir derleme bildirimi yazma, aşağıdakilerden birini yapın:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="client"
type="win32"
/>
<description>Hyperion Pro</description>
<!-- We have a dependancy on SQL Server CE 4.0 -->
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.SQLSERVER.CE.4.0"
version="4.0.0.0" processorArchitecture="x86"
/>
</dependentAssembly>
</dependency>
<!-- We are high-dpi aware on Windows Vista -->
<asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<asmv3:windowsSettings
xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
<!-- We were designed and tested on Windows 7 -->
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!--The ID below indicates application support for Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<!--The ID below indicates application support for Windows Vista -->
<!--supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/-->
</application>
</compatibility>
<!-- Disable file and registry virtualization -->
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Bu dosyayı yerleştirebilirsinizyanındayürütülebilir (Hyperion.exe.manifest
gibi), ya da RT_MANIFEST
bir kaynak olarak uygulama içine inşa edebilirsiniz.
Montaj Microsoft.SQLSERVER.CE.4.0
adlı karşı bir bağımlılığın var dikkat edin. Bu kurul bir ilk oluşturarak yaratıyoruzdizinadı:
Microsoft.SQL Server.CE.4.0
Uygulamanızı dağıtırken, bu oluşturan tüm 7 dll yerleştirecektir< . em ^"Meclis"bu Microsoft.SQLSERVER.CE.4.0
alt, .manifest
özel bir dosya ile birlikte:
C:\
|---Users
|---Ian
|---AppData
|---Local
|---Hyperion Pro
| Hyperion.exe
| Hyperion.exe.manifest
|----Microsoft.SQLSERVER.CE.4.0
sqlceme40.dll
sqlceca40.dll
sqlceoledb40.dll
sqlcese40.dll
sqlceqp40.dll
sqlcecompact40.dll
sqlceer40en.dll
Microsoft.SQLSERVER.CE.4.0.manifest
Diğer bir deyişle, uygulama, klasör, uygulama, ve içerirMicrosoft.SQL Server.CE.4.0klasör:
Directory of C:\Users\Ian\AppData\Local\Hyperion Pro
05/29/2012 09:23 AM 1,899,008 Hyperion.exe
05/28/2012 01:46 PM 1,587 Hyperion.exe.manifest
05/29/2012 09:27 AM <DIR> Microsoft.SQLSERVER.CE.4.0
2 File(s) 1,900,675 bytes
1 Dir(s) 20,851,503,104 bytes free
Senin görevin bir sonraki bölümü Microsoft.SQLSERVER.CE.4.0.manifest
dosyayı tanımlamak için. Kayıtsız COM bildirim dosyası tüm COM nesneleri ve onların clsıd bildirebilirsiniz. Bu tersine mühendislik bir sürü aldı. Ama Meclis 4.0 SQL bildirimi için:
Microsoft.SQL Server.CE.4.0.apaçık:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="Microsoft.SQLSERVER.CE.4.0"
processorArchitecture="x86"
version="4.0.0.0" />
<!-- OLEDB Provider -->
<file name = "sqlceoledb40.dll">
<comClass
description = "Microsoft SQL Server Compact OLE DB Provider for Windows"
clsid="{2006C53A-C915-41EA-BAA9-9EAB3A1FBF97}"
threadingModel = "Both"
progid = "Microsoft.SQLSERVER.CE.OLEDB.4.0" />
</file>
<!-- Native flat engine library -->
<file name="sqlceme40.dll" />
<!-- Engine and Replication COM object -->
<file name="sqlceca40.dll">
<comClass description="Active SSCE Engine Object"
clsid="{68D45319-3702-4837-9F8E-DA6845D82482}"
threadingModel="Both"
progid="SSCE.Engine.4.0" />
<comClass description="SSCE Error Object"
clsid="{36228F21-B5C7-4054-8DC2-47D3E236E8B5}"
threadingModel="Both"
progid="SSCE.Error.4.0" />
<comClass description="SSCE Param Object"
clsid="{0B3A7B75-A9B0-4580-9AA5-1A7DA47AD1CB}"
threadingModel="Both"
progid="SSCE.Param.4.0" />
<comClass description="Active SSCE Replication Object"
clsid="{11D5B2D4-26A4-44F5-A48B-0FAC3A919ED8}"
threadingModel="Both"
progid="SSCE.Replication.4.0" />
<comClass description="Active SSCE remote data access Object"
clsid="{58BC9AD6-BF11-40B3-9AB1-E3F2ED784C08}"
threadingModel="Both"
progid="SSCE.RemoteDataAccess.4.0" />
<typelib tlbid="{CE4AACFA-3CFD-4028-B2D9-F272314F07C8}"
version="4.0"
helpdir=""/>
</file>
<comInterfaceExternalProxyStub
name="ISSCEEngine"
iid="{10EC3E45-0870-4D7B-9A2D-F4F81B6B7FA2}"
proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"
baseInterface="{00000000-0000-0000-C000-000000000046}"
tlbid = "{CE4AACFA-3CFD-4028-B2D9-F272314F07C8}" />
<comInterfaceExternalProxyStub
name="ISSCEError"
iid="{31155A3B-871D-407F-9F73-DEBFAC7EFBE3}"
proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"
baseInterface="{00000000-0000-0000-C000-000000000046}"
tlbid = "{CE4AACFA-3CFD-4028-B2D9-F272314F07C8}" />
<comInterfaceExternalProxyStub
name="ISSCERDA"
iid="{4F04F79D-1FF1-4DCD-802B-3D51B9356C14}"
proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"
baseInterface="{00000000-0000-0000-C000-000000000046}"
tlbid = "{CE4AACFA-3CFD-4028-B2D9-F272314F07C8}" />
<comInterfaceExternalProxyStub
name="ISSCEParams"
iid="{A78AFF90-049C-41EC-B1D8-665968AAC4A6}"
proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"
baseInterface="{00000000-0000-0000-C000-000000000046}"
tlbid = "{CE4AACFA-3CFD-4028-B2D9-F272314F07C8}" />
<comInterfaceExternalProxyStub
name="ISSCEParam"
iid="{A9876C60-2667-44E5-89DB-E9A46ED392C0}"
proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"
baseInterface="{00000000-0000-0000-C000-000000000046}"
tlbid = "{CE4AACFA-3CFD-4028-B2D9-F272314F07C8}" />
<comInterfaceExternalProxyStub
name="ISSCEErrors"
iid="{C40143CA-E9F9-4FF4-B8B4-CC02C064FC1B}"
proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"
baseInterface="{00000000-0000-0000-C000-000000000046}"
tlbid = "{CE4AACFA-3CFD-4028-B2D9-F272314F07C8}" />
<comInterfaceExternalProxyStub
name="ISSCEMerge"
iid="{C6EB397F-D585-428D-A4F4-454A1842CB47}"
proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"
baseInterface="{00000000-0000-0000-C000-000000000046}"
tlbid = "{CE4AACFA-3CFD-4028-B2D9-F272314F07C8}" />
<file name="sqlceqp40.dll" />
<file name="sqlcese40.dll" />
<file name="sqlcecompact40.dll" />
<file name="sqlceer40EN.dll" />
</assembly>
En son anladım ki, aynı şekilde bir kısmı üzerinde bir derleme denir Microsoft.SQLSERVER.CE.4.0
SQL Server Compact Edition 4.0 olan bir bağımlılığın bir montaj denir Microsoft.VC90.CRT
. Neyse ki bu kurul bir kopyasını SUNUCU gemilerin yükleme:
|----Microsoft.VC90.CRT
| Microsoft.VC90.CRT.manifest
| msvcr90.dll
Bu son dizin yapısını anlamına gelir
C:\
|---Users
|---Ian
|---AppData
|---Local
|---Hyperion Pro
| Hyperion.exe
| Hyperion.exe.manifest
|----Microsoft.SQLSERVER.CE.4.0
| Microsoft.SQLSERVER.CE.4.0.manifest
| sqlceme40.dll
| sqlceca40.dll
| sqlceoledb40.dll
| sqlcese40.dll
| sqlceqp40.dll
| sqlcecompact40.dll
| sqlceer40en.dll
|---Microsoft.VC90.CRT
| Microsoft.VC90.CRT.manifest
| msvcr90.dll
Ben ETMENİZ SQL Server Compact Edition...
Sınırlamalar Server Compact SQL nedir?...
Nasıl bir SQL Server CE (Compact Editi...
Nasıl Server tablo sütun olup olmadığı...
Nasıl tarih sadece SQL Server datetime...