Mientras que la API no proporciona una interfaz explícita para establecer el esquema de destino, en realidad se puede rellenar un nombre de tabla calificado de 2 ó 3 partes en la propiedad DestinationTableName así:
b.DestinationTableName = string.Format("[{0}].[{1}]", schemaName, tableName);
o
b.DestinationTableName =
string.Format("[{0}].[{1}].[{2}]", databaseName, schemaName, tableName);
Teniendo en cuenta que BULK INSERT siempre ha sido compatible con un nombre de tabla totalmente calificado, parece un gran descuido que esos componentes separados nunca llegaron a la API.
Además, como parece que DestinationTableName
simplemente se envía a una declaración BULK INSERT
, esta propiedad puede ser vulnerable a la inyección de SQL. Por lo tanto, si obtiene información de un usuario en algún momento, asegúrese de desinfectar la entrada antes de ejecutar esta operación.