2010-12-02 6 views

Respuesta

11

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.

Cuestiones relacionadas