Aracılığıyla paylaş


Python veya R betiğinden SQL Server'a geri döngü bağlantısı

Şunlar için geçerlidir: SQL Server 2019 (15.x) ve sonraki sürümler Azure SQL Managed Instance

sp_execute_external_script'ten yürütülen Python veya R betiğinden veri okumak veya yazmak için ODBC üzerinden SQL Server'a geri dönmek için Machine Learning Services ile döngüsel bağlantı kullanmayı öğrenin. InputDataSet ve OutputDataSet bağımsız değişkenlerini sp_execute_external_script kullanamadığınızda bunu kullanabilirsiniz.

Bağlantı dizesi

Geri döngü bağlantısı oluşturmak için doğru bağlantı dizesini kullanmanız gerekir. Yaygın zorunlu bağımsız değişkenler ODBC sürücüsünün adı, sunucu adresi ve veritabanı adıdır.

Windows'da bağlantı dizesi

Windows üzerinde SQL Server'da kimlik doğrulaması için Python veya R betiği , sp_execute_external_script çalıştıran aynı kullanıcıyla kimlik doğrulaması yapmak için Trusted_Connection bağlantı dizesi özniteliğini kullanabilir.

Windows'da geri döngü bağlantı dizesi örneği aşağıda verilmiştir:

"Driver=SQL Server;Server=.;Database=nameOfDatabase;Trusted_Connection=Yes;"

Linux'ta bağlantı dizesi

Linux üzerinde SQL Server'da kimlik doğrulaması için Python veya R betiğinin, yürüten aynı kullanıcıyla kimlik doğrulaması yapmak için ODBC sürücüsünün ClientCertificate ve sp_execute_external_script özniteliklerini kullanması gerekir. Bunun için en son ODBC sürücüsü sürüm 17.4.1.1'in kullanılması gerekir.

Linux'ta geri döngü bağlantı dizesi örneği aşağıda verilmiştir:

"Driver=ODBC Driver 17 for SQL Server;Server=fe80::8012:3df5:0:5db1%eth0;Database=nameOfDatabase;ClientCertificate=file:/var/opt/mssql-extensibility/data/baeaac72-60b3-4fae-acfd-c50eff5d34a2/sqlsatellitecert.pem;ClientKey=file:/var/opt/mssql-extensibility/data/baeaac72-60b3-4fae-acfd-c50eff5d34a2/sqlsatellitekey.pem;TrustServerCertificate=Yes;Trusted_Connection=no;Encrypt=Yes"

Sunucu adresi, istemci sertifikası dosya konumu ve istemci anahtarı dosya konumu her sp_execute_external_script biri için benzersizdir ve Python için API rx_get_sql_loopback_connection_string() veya R için rxGetSqlLoopbackConnectionString() kullanılmasıyla elde edilebilir.

Bağlantı dizesi öznitelikleri hakkında daha fazla bilgi için bkz. SQL Server için Microsoft ODBC Sürücüsü için DSN ve Bağlantı Dizesi Anahtar Sözcükleri ve Öznitelikleri .

Azure SQL Managed Instance bağlantı dizesi

Azure SQL Yönetilen Örneği için bağlantı dizesi oluşturmak için sonraki bölümlerdeki örneklere bakın. Geri döngü bağlantıları için ODBC sürücüsü olarak SQL Server için ODBC Sürücüsü 11'i kullanın.

Python için revoscalepy ile bağlantı dizesi oluşturma

Python betiğinde geri döngü bağlantısı için doğru bir bağlantı dizesi oluşturmak üzere revoscalepy'de API rx_get_sql_loopback_connection_string() kullanabilirsiniz.

Aşağıdaki bağımsız değişkenleri kabul eder:

Argument Description
name_of_database Bağlantının yapılacağı veritabanının adı
ODBC sürücüsü Odbc sürücüsünün adı

Örnekler

Windows'da SQL Server örneği:

EXECUTE sp_execute_external_script
@language = N'Python',
@script = N'
from revoscalepy import rx_get_sql_loopback_connection_string, RxSqlServerData, rx_data_step
loopback_connection_string = rx_get_sql_loopback_connection_string(odbc_driver="SQL Server", name_of_database="DBName")
print("Connection String:{0}".format(loopback_connection_string))
data_set = RxSqlServerData(sql_query = "select col1, col2 from tableName",
                           connection_string = loopback_connection_string)
OutputDataSet = rx_data_step(data_set)
'
WITH RESULT SETS ((col1 int, col2 int))
GO

Linux üzerinde SQL Server örneği:

EXECUTE sp_execute_external_script
@language = N'Python',
@script = N'
from revoscalepy import rx_get_sql_loopback_connection_string, RxSqlServerData, rx_data_step
loopback_connection_string = rx_get_sql_loopback_connection_string(odbc_driver="ODBC Driver 17 for SQL Server",
                                                                   name_of_database="DBName")
print("Loopback Connection String:{0}".format(loopback_connection_string))
data_set = RxSqlServerData(sql_query = "select col1, col2 from tableName",
                           connection_string = loopback_connection_string)
OutputDataSet = rx_data_step(data_set)
'
WITH RESULT SETS ((col1 int, col2 int))
GO

Azure SQL Yönetilen Örneği örneği:

EXECUTE sp_execute_external_script
@language = N'Python',
@script = N'
from revoscalepy import rx_get_sql_loopback_connection_string, RxSqlServerData, rx_data_step
loopback_connection_string = rx_get_sql_loopback_connection_string(odbc_driver="ODBC Driver 11 for SQL Server", name_of_database="DBName")
print("Connection String:{0}".format(loopback_connection_string))
data_set = RxSqlServerData(sql_query = "select col1, col2 from tableName",
                           connection_string = loopback_connection_string)
OutputDataSet = rx_data_step(data_set)
'
WITH RESULT SETS ((col1 int, col2 int))
GO

R için RevoScaleR ile bağlantı dizesi oluşturma

R betiğinde geri döngü bağlantısı için doğru bir bağlantı dizesi oluşturmak üzere RevoScaleR'derxGetSqlLoopbackConnectionString() API'sini kullanabilirsiniz.

Aşağıdaki bağımsız değişkenleri kabul eder:

Argument Description
nameOfDatabase Bağlantının yapılacağı veritabanının adı
odbcDriver Odbc sürücüsünün adı

Örnekler

Windows'da SQL Server örneği:

EXECUTE sp_execute_external_script
@language = N'R',
@script = N'
    loopbackConnectionString <- rxGetSqlLoopbackConnectionString(nameOfDatabase="DBName", odbcDriver ="SQL Server")
    print(paste("Connection String:", loopbackConnectionString))
    dataSet <- RxSqlServerData(sqlQuery = "select col1, col2 from tableName",
                               connectionString = loopbackConnectionString)
    OutputDataSet <- rxDataStep(dataSet)
'
WITH RESULT SETS ((col1 int, col2 int))
GO

Linux üzerinde SQL Server örneği:

EXECUTE sp_execute_external_script
@language = N'R',
@script = N'
    loopbackConnectionString <-  rxGetSqlLoopbackConnectionString(nameOfDatabase="DBName", 
                                                                  odbcDriver ="ODBC Driver 17 for SQL Server")
    print(paste("Connection String:", loopbackConnectionString))
    dataSet <- RxSqlServerData(sqlQuery = "select col1, col2 from tableName", 
                               connectionString = loopbackConnectionString)
    OutputDataSet <- rxDataStep(dataSet)
'
WITH RESULT SETS ((col1 int, col2 int))
GO

Azure SQL Yönetilen Örneği örneği:

EXECUTE sp_execute_external_script
@language = N'R',
@script = N'
    loopbackConnectionString <- rxGetSqlLoopbackConnectionString(nameOfDatabase="DBName", odbcDriver ="ODBC Driver 11 for SQL Server")
    print(paste("Connection String:", loopbackConnectionString))
    dataSet <- RxSqlServerData(sqlQuery = "select col1, col2 from tableName",
                               connectionString = loopbackConnectionString)
    OutputDataSet <- rxDataStep(dataSet)
'
WITH RESULT SETS ((col1 int, col2 int))
GO

Sonraki Adımlar