SORU
24 Mayıs 2012, PERŞEMBE


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ı?

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

i tried frobbing the widget, but it grobbed the frobber.

CEVAP
29 Mayıs 2012, Salı


çö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 dll
  • sqlceoledb40.dll SSCE (ADO kullanımına izin veren) için bir OLEdb Sağlayıcısı kullanan BİR COM dll
  • sqlcese40.dllbilinmeyen
  • sqlceqp40.dllbilinmeyen
  • sqlcecompact40.dllbilinmeyen
  • sqlceer40en.dllbilinmeyen

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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bobono1baby

    bobono1baby

    14 AĞUSTOS 2011
  • Cristina Landa

    Cristina Lan

    28 Ocak 2010
  • Schmittastic Jr.

    Schmittastic

    19 Mart 2013