Połączenie do usługi SQL Managed Instance włączonej przez usługę Azure Arc

W tym artykule wyjaśniono, jak można nawiązać połączenie z wystąpieniem zarządzanym SQL włączonym przez usługę Azure Arc.

Wyświetlanie wystąpienia zarządzanego SQL włączonego przez usługę Azure Arc

Aby wyświetlić wystąpienie i zewnętrzne punkty końcowe, użyj następującego polecenia:

az sql mi-arc list --k8s-namespace <namespace> --use-k8s -o table

Dane wyjściowe powinny wyglądać następująco:

Name       PrimaryEndpoint      Replicas    State
---------  -------------------  ----------  -------
sqldemo    10.240.0.107,1433    1/1         Ready

Jeśli używasz usługi AKS lub kubeadm lub OpenShift itp., możesz skopiować zewnętrzny adres IP i numer portu z tego miejsca i nawiązać z nim połączenie przy użyciu ulubionego narzędzia do nawiązywania połączenia z wystąpieniem programu SQL Sever/Azure SQL, takim jak Azure Data Studio lub SQL Server Management Studio. Jeśli jednak używasz maszyny wirtualnej szybkiego startu, zobacz poniżej, aby uzyskać specjalne informacje na temat nawiązywania połączenia z maszyną wirtualną spoza platformy Azure.

Uwaga

Zasady firmowe mogą blokować dostęp do adresu IP i portu, zwłaszcza jeśli jest on tworzony w chmurze publicznej.

Połącz

Połączenie za pomocą programu Azure Data Studio, PROGRAMU SQL Server Management Studio lub SQLCMD

Otwórz narzędzie Azure Data Studio i połącz się z wystąpieniem przy użyciu zewnętrznego adresu IP punktu końcowego i numeru portu powyżej. Jeśli używasz maszyny wirtualnej platformy Azure, potrzebny będzie publiczny adres IP, który można zidentyfikować przy użyciu specjalnej notatki dotyczącej wdrożeń maszyn wirtualnych platformy Azure.

Na przykład:

  • Serwer: 52.229.9.30,30913
  • Nazwa użytkownika: sa
  • Hasło: określone hasło SQL w czasie aprowizacji

Uwaga

Możesz użyć narzędzia Azure Data Studio , aby wyświetlić pulpity nawigacyjne wystąpienia zarządzanego SQL.

Uwaga

Aby nawiązać połączenie z wystąpieniem zarządzanym, które zostało utworzone przy użyciu manifestu kubernetes, należy podać nazwę użytkownika i hasło do narzędzia sqlcmd w postaci zakodowanej w formacie base64.

Aby nawiązać połączenie przy użyciu polecenia SQLCMD lub Linux lub Windows, możesz użyć polecenia w następujący sposób. Wprowadź hasło SQL po wyświetleniu monitu:

sqlcmd -S 52.229.9.30,30913 -U sa

Szczególna uwaga dotycząca wdrożeń maszyn wirtualnych platformy Azure

Jeśli używasz maszyny wirtualnej platformy Azure, adres IP punktu końcowego nie będzie pokazywał publicznego adresu IP. Aby zlokalizować zewnętrzny adres IP, użyj następującego polecenia:

az network public-ip list -g azurearcvm-rg --query "[].{PublicIP:ipAddress}" -o table

Następnie możesz połączyć publiczny adres IP z portem, aby nawiązać połączenie.

Może być również konieczne uwidocznienie portu wystąpienia sql za pośrednictwem sieciowej grupy zabezpieczeń. Aby zezwolić na ruch przez sieciową grupę zabezpieczeń, należy dodać regułę, którą można wykonać za pomocą następującego polecenia.

Aby ustawić regułę, musisz znać nazwę sieciowej grupy zabezpieczeń, którą można znaleźć za pomocą poniższego polecenia:

az network nsg list -g azurearcvm-rg --query "[].{NSGName:name}" -o table

Po utworzeniu nazwy sieciowej grupy zabezpieczeń możesz dodać regułę zapory przy użyciu następującego polecenia. W tym przykładzie wartości tworzą regułę sieciowej grupy zabezpieczeń dla portu 30913 i zezwalają na połączenie z dowolnego źródłowego adresu IP. Nie jest to najlepsze rozwiązanie dotyczące zabezpieczeń! Można zablokować wszystko lepiej, określając wartość -source-address-prefixes, która jest specyficzna dla adresu IP klienta, lub zakres adresów IP obejmujący adresy IP Twojego zespołu lub Twojej organizacji.

Zastąp wartość poniższego --destination-port-ranges parametru numerem portu uzyskanym z powyższego az sql mi-arc list polecenia.

az network nsg rule create -n db_port --destination-port-ranges 30913 --source-address-prefixes '*' --nsg-name azurearcvmNSG --priority 500 -g azurearcvm-rg --access Allow --description 'Allow port through for db access' --destination-address-prefixes '*' --direction Inbound --protocol Tcp --source-port-ranges '*'