Megosztás:


Visszacsatolási kapcsolat az SQL Serverrel Python- vagy R-szkriptből

Vonatkozik a következőkre: SQL Server 2019 (15.x) és későbbi verziók Azure SQL Managed Instance

Megtudhatja, hogyan használhat visszacsatolási kapcsolatot a Machine Learning Services szolgáltatással az SQL Serverhez való csatlakozáshoz ODBC-n keresztül, hogy adatokat olvasson vagy írjon az sp_execute_external_script-ból végrehajtott Python- vagy R-szkriptből. Ezt akkor használhatja, ha az InputDataSet és Az OutputDataSet argumentumai sp_execute_external_script nem használhatók.

Csatlakozási karakterlánc

A visszacsatolási kapcsolat létrehozásához megfelelő kapcsolati sztringet kell használnia. A gyakori kötelező argumentumok az ODBC-illesztő neve, a kiszolgáló címe és az adatbázis neve.

Windows alatti kapcsolati lánc

A Windows SQL Serveren történő hitelesítéshez a Python- vagy R-szkript a Trusted_Connection kapcsolati sztring attribútumot használhatja a hitelesítéshez ugyanazzal a felhasználóval, aki a sp_execute_external_script futtatta.

Íme egy példa a loopback connection string-re a Windows rendszeren:

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

Kapcsolati karakterlánc Linuxon

A Linuxon futó SQL Serveren történő hitelesítéshez a Python- vagy R-szkriptnek az ODBC-illesztő ClientCertificate és ClientKey attribútumait kell használnia a hitelesítéshez ugyanazzal a felhasználóval, aki végrehajtotta sp_execute_external_script. Ehhez a legújabb ODBC-illesztőprogram 17.4.1.1-es verziójára van szükség.

Íme egy példa a loopback kapcsolati karakterlánc példája Linuxon:

"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"

A kiszolgáló címe, az ügyféltanúsítvány-fájl helye és az ügyfélkulcsfájl helye mindegyikre sp_execute_external_script egyedi, és a Python api rx_get_sql_loopback_connection_string() vagy az R-hez készült rxGetSqlLoopbackConnectionString() használatával érhető el.

A kapcsolati sztring attribútumokkal kapcsolatos további információkért tekintse meg az SQL Serverhez készült Microsoft ODBC-illesztőprogram DSN- és kapcsolati sztring-kulcsszavait és attribútumait .

Az Azure SQL-felügyelt példány kapcsolati karakterlánca

A felügyelt Azure SQL-példány kapcsolati sztringjének létrehozásához tekintse meg a következő szakaszokban szereplő példákat. A visszacsatolási kapcsolatok ODBC-illesztőjeként használja az SQL Server 11 ODBC-illesztőjét .

Kapcsolati sztring létrehozása a Pythonhoz készült revoscalepy használatával

A revoscalepy API rx_get_sql_loopback_connection_string() használatával megfelelő kapcsolati sztringet hozhat létre egy Python-szkript visszacsatolási kapcsolatához.

A következő argumentumokat fogadja el:

Argument Description
name_of_database Annak az adatbázisnak a neve, amelyhez a kapcsolatot létre kell hozni
odbc_driver Az odbc-illesztő neve

Példák

Példa egy SQL Server-re Windows alatt:

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

SQL Server példája Linuxon:

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 Managed Instance példa:

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

Kapcsolati sztring létrehozása az R-hez készült RevoScaleR használatával

A RevoScaleR api rxGetSqlLoopbackConnectionString() használatával létrehozhat egy megfelelő kapcsolati sztringet a visszacsatolási kapcsolathoz egy R-szkriptben.

A következő argumentumokat fogadja el:

Argument Description
adatbázisNeve Annak az adatbázisnak a neve, amelyhez a kapcsolatot létre kell hozni
odbcDriver Az ODBC-illesztő neve

Példák

Példa a Windows operációs rendszeren futó SQL Serverre:

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

Példa linuxos SQL Serverre:

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

Példa az Azure SQL Managed Instance-ra:

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

Következő lépések