2010-06-21 16 views
10

Na MSDN website mówi: „łączenia się z SQL Azure za pomocą OLE DB nie jest obsługiwany.Dlaczego firma Microsoft nie obsługuje połączeń OLE DB z usługą SQL Azure?

Są inne miejsca w sieci, gdzie ludzie donoszą, że działa dobrze dla nich po szczypanie nazwę serwera ciąg połączenia, taki jak here i here. Nawet serwer SQL Server Analysis Services uses OLE DB to connect to SQL Azure!

Opracowuję natywną/niezarządzaną aplikację w Delphi, która łączy się z SQL Server przy użyciu ADO przez dostawcę OLE DB dla SQL Server. Rozważam dodanie obsługi SQL Azure. Byłoby bardzo pomocne, gdybym mógł ponownie wykorzystać większość mojego kodu bez zbytniej zmiany. Prawdopodobnie nie rozważałbym pójścia w tym kierunku inaczej.

Byłoby pomocne, gdyby Microsoft wyjaśnił, dlaczego "OLE DB nie jest obsługiwany". Jeśli istnieją pewne ograniczenia w korzystaniu z OLE DB, jakie one są? Może uda mi się je obejść, a może nie wpłynie to na mnie.

Microsoft wspomina również, że ODBC jest obsługiwany. Czy mogę użyć "dostawcy OLE DB do ODBC" i połączyć się w ten sposób? A może jakakolwiek kombinacja zawierająca OLE DB "nie jest obsługiwana"?

+0

Właśnie zauważyłem w książce "Platforma Windows Azure", że ciąg połączenia OLE DB był używany w portalu SQL Azure. Ta książka została opublikowana około sześć miesięcy temu. – Troy

Odpowiedz

7

Można go używać, jednak nie zostało dokładnie przetestowane we wszystkich przypadkach. Zasadniczo powinno działać dla większości rzeczy, ale może być kilka skrajnych przypadków, w których to nie zadziała. Dopóki nie udokumentujemy tych przypadków, pozostaje ono nieobsługiwane. Biorąc to pod uwagę, gdybyś użył i popadł w błędy, chcielibyśmy o tym wiedzieć i nadać mu priorytet.

+0

Dzięki, Dunnie. To pomaga. Dam temu szansę. Moje użycie OLE DB będzie dość ograniczone (aby uruchamiać kursory i polecenia aktualizacji). Jeśli napotkasz rozbieżności, jaki jest najskuteczniejszy sposób poinformowania odpowiedniego zespołu ds. Produktu w firmie Microsoft? – Troy

+0

Chciałbym skontaktować się z zespołem SQL Azure bezpośrednio przez blog - http://blogs.msdn.com/sqlazure. Ewentualnie możesz zawsze wysłać wiadomość e-mail na mój sposób (przez dunnry.com), a ja przekierujemy. – dunnry

4

Można użyć ADO używając SQL Native Client chociaż ta informacja jest trudno znaleźć można przeczytać o tym tutaj i tutaj http://msdn.microsoft.com/en-us/library/ms131035(SQL.110).aspxhttp://msdn.microsoft.com/en-us/library/ms130978(SQL.110).aspx.

W ciągu połączenia zamiast za pomocą Provider = SQLOLEDB; możemy użyć Provider = SQLNCLI10 ;. Zalecane jest również użycie DataTypeCompatibility = 80 ;. Więc SQL Native Client obsługiwane ciąg połączenia będzie wyglądać następująco:

„Provider = SQLNCLI10; Server = tcp: MyServerName.database.windows.net; Database = AdventureWorks2008R2; uid = MyUserName @ MyServerName; PWD = MyPa $$ w0rd ; Encrypt = Yes; DataTypeCompatibility = 80; "

Możesz także dodać "Połączenie MARS = True;" do ciągu połączenia dla wielu zestawów rekordów.

+2

Dzięki; to było pomocne. Uwaga: możesz umieścić pojedyncze cudzysłowy wokół pola hasła, jeśli zawiera znaki zarezerwowane, takie jak średniki. zobacz http://stackoverflow.com/questions/3177861/escape-quote-in-web-config-connection-string –

Powiązane problemy