Microsoft SQL Server 6.5 veya daha sonraki bir sürümünü yükleyin ve özel bir Bileşen Nesne Modeli (COM) nesneleri kümesi OLE Otomasyonu içinde çalıştırma yeteneği, saklı yordamları veya aracılığıyla saklı yordamlar genişletilmiş sağlar. Varsayılan olarak, DLL tabanlı COM nesneleri gibi COM nesneleri yalnızca SQL Server işleminin bellek adres alanlarında yüklenmez, ancak aynı zamanda tam erişim bu bellek adres alanına sahip oldukları anlamına gelir işlem sunucusu yüklenir. Bu nedenle, SQL Server işlem alanında yüklü olan bir COM nesnesi, herhangi bir DLL dosyası olarak aynı kurallarına uygun olmalıdır. Bellek içinde zayıflatır SQL Sunucu işleminin veya sızıntısı kaynaklarını, bir COM nesnesi üzerine yazabilirsiniz bir olasılığı vardır.
Bir COM nesnesi SQL Server işleminin sağlamlık etkileyen bir bakışta varsa, SQL Server işlem alanı dışındaki COM nesne örneğini oluşturmak için bu makaledeki adımları kullanmak isteyebilirsiniz. Uygulama Dağıtılmış Bileşen Nesne modeli kullanıcının (DCOM), DLL tabanlı COM nesnesi, SQL Server işlem alanı dışında çalıştırma yeteneği "Konum saydamlık" tayini işletim sistemine sağladı.
Bir DLL tabanlı COM nesnesi, ana uygulama adres alanının dışında çalışan işlemi, uzak olarak adlandırılır. Uzak, başka bir yürütülebilir dosya, SQL Server yürütülebilir dosyası yerine bir yedek işlem olmasını gerektirir. DCOM Hizmet Denetim Yöneticisi (Rpcss.exe) tarafından kullanılan varsayılan yürütülebilir Dllhost.exe olarak adlandırılır. DCOM desteği yapısı, işlem alanına DLL yüklenemedi, Dllhost.exe dosyası kullanır ve saydam olarak SQL Server bu durumda, istemciye, istenen arabirim sıralamakta proxy/saplama çiftleri kullanır. Bu yürütülebilir dosya aynı anda birden çok arabirim/yöntem istekleri kabul edebilir. Arabirim kullanımı tamamlandıktan sonra DCOM Hizmet Denetim Yöneticisi (SCM) temiz yukarı ve Dllhost.exe dosyası kaldırılıyor yönetir. COM nesneleri örneklemesi arasında durum bilgilerini saklamak için beklenmelidir değil.
Kullanılabilmesi için düzgün çalışabilmesi, bu makalede, sistem bir DCOM etkin işletim sistemi çalıştırması gerekir. DCOM yüklenmiş eklenti ile bu Windows NT 4.0 Service Pack 2 veya sonraki sürümleri, Microsoft Windows 98 veya Microsoft Windows 95 olacaktır. Olup olmadığını, bunun sp_OACreate veya genişletilmiş bir depolanmış yordamı örneği SQL Server işlem alanında oluşturulan herhangi bir DLL tabanlı COM nesnesi için aşağıdaki adımları uygulayabilirsiniz.
COM nesnesi Çağır değiştirerek, nesneyi SQL Server adres alanı dışında oluşturulmasını isteyebilir.
Varsayılan olarak COM nesnesi sp_OACreate yordamını kullanarak yükledi, işlem sırasında yüklenir. Ancak, yok isteğe bağlı bir üçüncü parametre bu yordamın bağlamında nesne oluşturulacağı yeri belirtmek için kullanabileceğiniz bu olabilir. Bu parametre belirtilmezse, varsayılan ayar olan beş (5), kullanılan nesne içinde veya dışında işlemin çalışmak üzere olduğu anlamına gelir. Parametreyi değiştirmek gereksinim duyduğunuz dört (4 gösterir), bu bileşen yerel bir yürütülebilir dosyayı çalıştırmak üzere, DCOM'u. Açıkça ","işlem COM nesnesi çalıştırmak için DCOM bildirmek için aşağıdaki örneğe benzer bir sözdizimi kullanın sp_OACreate kullanarak saklı yordamını:
DECLARE @object int
DECLARE @hr int
EXEC @hr = sp_OACreate 'SQLOLE.SQLServer', @object OUT, 4
COM nesnesi içinde oluşturulmuş bir genişletilmiş üçüncü parametre, Cocreateınstance saklı yordamını veya CoCreateInstanceEx CLSCTX_LOCAL_SERVER için değiştirilebilir. Cocreateınstance kullanarak aşağıdaki kod örneğinde gösterilen:
Uzak hizmet nesnesinin zorlamak için kayıt defterini
Nesne, işlem dışı oluşturulmasını istemek için COM istemcisi değiştirilemiyor, işlem dışı oluşturulacak nesnenin zorlamak için iki farklı yöntem yok.
Microsoft Visual C++ ile birlikte gelir ve altındaki Tüm nesneleri OLEComponent.Object biçiminde Progıd bulun OLE/COM nesnesi görüntüleyiciyi (Oleview.exe) kullanın. COM nesnesi seçin ve sonra da nesne menüsünden Cocreateınstance Flags seçin. Yalnızca CLSCTX_LOCAL_SERVER seçili olduğundan emin olun. Sonra Uygulama ve Inproc sunucu altındaki sekmeleri Yedek işlem kullan'ı seçin ve "yolu için özel yedek" alanını boş bırakın Dllhost.exe dosyasının yüklenmesine olanak veren ve COM DLL sıra içinde duruma işlem.
Microsoft Visual C++ yoksa OLE/COM nesnesi Görüntüleyicisi yardımcı programını ayrıca aşağıdaki Microsoft Web sitesinden yüklenebilir:
Kayıt defterini el ile olarak güncelleştirmek için aşağıdaki adımları kullanın.
Uyarı Kayıt Defteri Düzenleyicisi'ni veya başka bir yöntemi kullanarak kayıt defterini hatalı olarak değiştirirseniz önemli sorunlar oluşabilir. Bu sorunlar, işletim sisteminizi yeniden yüklemenizi gerektirebilir. Microsoft bu sorunların çözülebileceğini garanti etmemektedir. Kayıt defterini kendi sorumluluğunuzda değiştiriniz.
COM nesnesinin sınıf tanımlayıcısı (CLSID) edinin. Clsıd DEĞERINI 128 bitlik bir sayıdır ve bu bileşen, modül veya bu COM nesnesi içeren bir dosyayı benzersiz olarak tanımlamakta kullanılan bir genel benzersiz tanıtıcı (GUID) kabul. Saklı yordamları OLE Otomasyon kullanarak COM nesneleri oluşturan ilk parametresi depolanmış yordamın programsal bir tanımlayıcıdır veya Progıd <a0>OLE</a0> nesnesinin CLSID türetmek için kullanılır. Bu karakter dizesi OLE nesnesinin sınıf açıklanır ve aşağıdaki biçime sahiptir:
OLEComponent.Object
programsal tanıtıcısı bir COM nesnesi için sınıf tanımlayıcısını bulmak için kullanabilirsiniz.
Kayıt defteri düzenleyicisini (Regedit.exe) açın ve HKEY_CLASSES_ROOT anahtarının altında bir anahtarla sizin <OLEComponent.Object> adını bulmak için Bul yöntemini kullanın.. Diğer düzeylerde bulabilirsiniz, ancak bunu doğrudan HKEY_CLASSES_ROOT altında düzeyinde bulunması. Anahtarı bulduktan sonra anahtar adı için klasörünü genişletin ve CLSID adlı bir alt anahtar görmelisiniz. Bu klasörün içinde anahtar değerlerini görmek için Ek Yardım düğmesini tıklatın. Ekranın sağ tarafında bir başlık "(varsayılan)" adı verilir. Bu anahtarın verileri şu biçimde olmalıdır:
{59F929A0-74D8-11D2-8CBC-08005A390B09}
için Not Defteri'ni kopyalayın ya da bu değeri not alın. Köşeli ayraçlar ekleyin.
HKEY_CLASSES_ROOT\CLSID anahtarında gidin ve bu GUID numarasıyla alt anahtarı bulun. HKEY_CLASSES_ROOT\CLSID anahtarını vurgulayın, sonra Bul işlevi, Kayıt Defteri Düzenleyicisi'nde (Düzen menüsü altında) kullanır ve GUID, Bul iletişim kutusuna yapıştırın. COM DLL dosyasının konumuna işaret bu anahtarın altındaki ınprocserver32 alt inceleyerek doğru arabirim buldunuz emin olun. TypeLib anahtar varsa, bu GUID değerini denetleyin. Bu, ne 1. adımda not ettiğiniz değerinden farklı olmalıdır. Aksi halde, TypeLib GUID ve COM nesnesinin GUID değil var. Progıd alt 'OLEComponent.Object.1' değerine sahip olacaktır. Bir ucundaki bu için yalnızca örnektir ve sürüm oluşturma bilgileri için kullanılır.
Alt GUıD'ın ınprocserver32 anahtarının altında çalışırken, ThreadingModel değeri vardır ve her iki both ayarlamak veya dizme emin olmak için ücretsiz olarak, COM nesnesi, SQL Server işlem alanınız COM yürütülmesini etkinleştirmek için iş parçacığı modeli anladığı durumda olduğundan emin olun. ThreadingModel değeri değil veya grup için ayarlanmış, COM Nesne örnekleme tutarlı olmayabilir.
Not Değer emin ThreadingModel eklerseniz, bir COM nesnesi uygulamadan önce sınayın.
GUID numarasını/alt HKEY_CLASSES_ROOT\CLSID</a0> anahtarının altında vurgulayın. Düzen menüsünden Yeni ' yi tıklatın ve sonra Dize değeri seçin. Ad sütunu altında aşağıdaki komutu yazın:
Appıd
ENTER tuşuna basın ve sonra değeri olarak 1. adımdaki sınıf tanımlayıcı veya GUID numarasını not ettiğiniz ekleyin. GUID, aşağıdaki örnekte olduğu gibi kaşlı ayraçlar içinde olması gerekir:
{59F929A0-74D8-11D2-8CBC-08005A390B09}
uygulamanın Appıd tanımlayıcı DCOM tarafından DLL yürütülebilir bir dosya ile ilişkilendirmek için kullanılır.
HKEY_CLASSES_ROOT\AppID altında yeni bir alt anahtar ekleyin ve bu bilgisayarın adı aynı sınıf tanımlayıcı veya GUID numarasını önceki adımda eklediğiniz gibi bir ayraç olarak ayarlayın.
GUID adı vurgulayın. Düzen menüsünden Yeni ' yi tıklatın ve sonra Dize değeri seçin. Ad sütunu altında aşağıdaki komutu yazın:
DllSurrogate
Veri sütununun, bu değer için boş bırakın. Veri sütununun bu DCOM bildirir varsayılan yürütülebilir dosyayı çalıştırmak için boş olduğu için alan işlem, Dllhost.exe ve <a1>Yükle</a1> içinde kendi COM nesnesi.
Kayıt Defteri Düzenleyicisi'ni kapatın. Başlat ' ı tıklatın ve sonra da <a2>Çalıştır</a2>'ı tıklatın. Çalıştır iletişim kutusunda, aşağıdakileri yazın:
DCOMCNFG
<a0>Dağıtılmış COM Yapılandırması Özellikleri</a0> iletişim kutusunu açmak için ENTER tuşuna basın. Varsayılan Özellikler sekmesini tıklatın ve Bu bilgisayarda dağıtılmış COM'U etkinleştir seçili olduğundan emin olun. Yüklü değilse, seçin ve sonra Uygula ' yı tıklatın.
Microsoft Windows NT kullanıcı hesabı altında çalışan SQL Server bu nesne için kayıt defteri anahtarlarının "Tam Denetim" iznine sahip olduğundan emin olun. COM nesnesi oluşturulurken izinleri yeterli değil veya kayıt defteri anahtarları hatalı olarak giriş komutu aşağıdaki hataları oluşabilir:
OLE Otomasyonu hata bilgileri hresult: 0X80040154 Kaynak: Yordam genişletilmiş ODSOLE Açıklama: Sınıf kayıtlı değil
OLE Otomasyonu hata bilgileri hresult: 0X80070005 Kaynak: Yordam genişletilmiş ODSOLE Açıklama: Erişim engellendi.
OLE Otomasyonu hata bilgileri hresult: 0X80080005 Kaynak: Yordam genişletilmiş ODSOLE Açıklama: sunucu yürütme işlemi başarısız oldu
Sınama ve bu Dllhost.exe dosyası çalıştırma ve COM nesnesi, <a0>işlem</a0> alanında yükleniyor, bakın. Bu, Microsoft Windows NT Resource Kit'in bir SQL Server'ın çalıştığı bir Windows NT bilgisayarda olduğunu gerektirir. Komut istemini açın ve tüm işlemler ve bunların ilişkili işlem tanımlayıcıları veya işlem tanımlayıcılarını (Pıd) gösteren Tlist.exe dosyası, komut isteminden çalıştırın. Transact-SQL komut dosyasında sp_OACreate çalıştırın ve bu çağrı yürütüldükten sonra ancak komut dosyası sonlandırılmadan önce ek bir 20 saniye için komut dosyası tamamlama geciktirmek için aşağıdakileri kullanın:
WAITFOR DELAY '000:00:20'
komut dosyasını çalıştırın ve komut istemine gidin ve hemen Tlist.exe dosyas?n? çal??t?r?n. PID Dllhost.exe unutmayın. Tlist.exe'nı yeniden çalıştırın ve PID parametre olarak geçirmek. Bu, Dllhost.exe işlemini alanlarında yüklenen DLL'leri gösterir. DLL tabanlı COM nesnesi, bu işlemde çalışan olarak listelenmelidir. Sonra komut dosyası döndürür, Tlist.exe'nı yeniden çalıştırmayı Dllhost.exe) işlemi artık çalışmadığı gösterir.
Aşağıdaki örnek çıkış, SQL Server işlem alanı dışında ADODB.Connection nesnesi oluşturulur. COM nesnesi Dllhost.exe işlem alanında varolan sırada Tlist.exe kullanarak bu anlık görüntü gerçekleştirildi. COM nesnesi içeren modül olan Msado15.dll modülünün yüklenen dikkat edin.
Ile SQL Server sürüm 7.0 Desktop Edition, Microsoft Windows 95 veya Microsoft Windows 98 iş istasyonları üzerinde çalışan DLLHOST.exe dosyası ve bir COM nesnesi bu sınama sırasında DLL loading\unloading görmek için yürütme sırasında "32-bit modülleri Loaded" içinde bir uygulama Microsoft Sistem Bilgisi aracı kullanılabilir. Aracı erişmek için <a0></a0>, Başlat ' ı tıklatın, Programlar ' ın üzerine gidin, Donatılar ' ın üzerine gelin ve sonra da Sistem Araçları ' nı tıklatın.
Not Güvenlik sınırlamaları nedeniyle, Windows 95 veya Windows 98 DLLSurrogate işlem başlatma ve bir uzak istemci tarafından bir COM DLL yükleniyor desteklemiyor. Bu nedenle, COM Nesne çalışan nesne tablo'içinde (ROT) var ve çalışan yüklü/bir uzak istemci bilgisayar tarafından kullanılabilmesi için ise gerekir. SQL Server'de tutarsızlığa neden olmasını şüphelenildi, COM nesneleri izole etmenize yardımcı olmak için bu makaledeki adımları kullanın. Her bileşen iyice tutarlı davranışı sağlamak için işlem dışı çalışan sınanır emin olun. SQL Sunucu işlemi ve işlem dışında bir COM nesnesinin örneğini oluşturmasını, performansı fark değişir. Ayrıca, bazı COM nesneleri, uzak olarak oluşturulan değil ve kaynakları sızdırıyor. Bu makaledeki adımları uygulamadan bir sorun giderme adımı dışındaki bir şey için önce kapsamlı biçimde sınayın. Aşağıdaki Microsoft Bilgi Bankası makalesi nasıl uzak bir COM nesnesi, bir kaynak sızıntısına neden olabilir, bir örnek vardır:
Not Microsoft SQL 6.5 sürümünüzün SP5'e, varsayılan olarak, tek iş parçacığı grubu (STA) modeli ile birlikte çalışır ve COM nesnelerinin ayrı bir iç iş parçacığı başlatma gerçekleştirir. Bu modelde, bir iş parçacığının tüm OLE nesneleri SQL Server işlemi içinde ve bu COM nesnesine erişim gerektiren geri tüm istemci bağlantıları için proxy oluşturulmasını denetlemek için seçilir. Bu SQL Server tarafından dahili olarak işlendiğini çünkü nesnenin sürdürme arasında COM nesnesinin örneklemesi garanti edilemez.
SQL Server 6.5 COM Nesne modeli hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
194661
(http://support.microsoft.com/kb/194661/
)
SQL Server COM nesnesi kalıcı modeli
Biçimi hakkında daha fazla bilgi için Sp_OA saklı yordamını uygulanır, Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
180780
(http://support.microsoft.com/kb/180780/
)
Sp_OA yordamlar uzantısı SQL Server'a nasıl uygulanır
DLL yedeklerin; DLL tabanlı COM nesneleri çalıştırma hakkında daha fazla bilgi için aşağıdaki başvurun:
Eddon, Guy; Eddon Henry, <a1>Com</a1> (Mps) ınside dağıtılmış. Microsoft Press, 1998, (ISBN 1-57231-849-X), sekiz bölüm: ' DLL yedeklerin ve yürütülebilir bileşenleri
Kutusuna, tan Essential COM. Addison-Wesley ortak. Co., (ISBN 0-201-63446-5) altı bölüm: 'Uygulamaları' Grimes Richard, <a1>Professional</a1> DCOM programı. Wrox Press ınc. (ISBN 1-861000-60-X)'i, bölüm dört: 'Dağıtılmış COM' The DCOM eklenti Windows 95 için SQL Server 7.0 medyayla sevk ve dosyayı Dcom95.exe olarak adlandırılır. Dcom95.exe, aşağıdaki Web sitesinden yükleyebilirsiniz:
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:198891
(http://support.microsoft.com/kb/198891/en-us/
)
Bu makaleyi kullanmak için ne kadar kişisel çaba harcadınız?
Çok az
Az
Orta
Fazla
Çok fazla
Bu bilgiyi geliştirmemiz için nedenleri ve bu konuda neler yapabileceğimizi paylaşın
Teşekkürler! Görüşleriniz, destek içeriğimizi geliştirmemize yardımcı olmak için kullanılmaktadır. Diğer yardım seçenekleri için, lütfen Yardım ve Destek Giriş Sayfasını ziyaret edin.