如何使用连接字符串创建U-SQL外部数据源?(凭据参数报错)
解决U-SQL创建Azure SQL DB数据源时的CREDENTIAL参数错误
你这是踩了U-SQL数据源配置的一个常见坑——CREDENTIAL参数的用法完全不符合要求。U-SQL不允许直接在CREDENTIAL字段里写用户名密码的拼接字符串,而是要求你先创建一个数据库范围的凭据,再在数据源定义里引用这个凭据的名称。另外你的PROVIDER_STRING也缺了服务器地址信息,这也是触发报错的原因之一。
正确的操作步骤:
先创建数据库凭据
用CREATE CREDENTIAL语句单独存储敏感的登录信息,避免直接暴露在数据源代码里:CREATE CREDENTIAL MyAzureSQLDBCredential WITH IDENTITY = 'myUser', SECRET = 'myPasswd';IDENTITY:填写你的Azure SQL DB登录用户名(SQL身份验证模式下直接写用户名即可)SECRET:填写对应的登录密码
创建数据源并引用凭据
补全PROVIDER_STRING里的服务器地址,然后在CREDENTIAL字段填写刚才创建的凭据名称:CREATE DATA SOURCE MyAzureSQLDBDataSource FROM AZURESQLDB WITH ( PROVIDER_STRING = "Server=mySampleDB.database.windows.net;Database=mySampleDB;", CREDENTIAL = "MyAzureSQLDBCredential", REMOTABLE_TYPES = (bool, byte, sbyte, short, ushort, int, uint, long, ulong, decimal, float, double, string, DateTime) );
原代码报错的核心原因:
- U-SQL的
AZURESQLDB数据源对CREDENTIAL参数的要求是已存在的凭据名称,而非直接传入用户名密码的字符串,这是和普通ADO.NET连接字符串的关键区别。 - 你的
PROVIDER_STRING只指定了数据库名称,缺少服务器地址,导致U-SQL无法定位到目标Azure SQL DB实例。
按照这个修正后的代码重新执行,应该就能顺利创建数据源了。
内容的提问来源于stack exchange,提问作者Jeson Martajaya
相关产品推荐
相关产品推荐

