Я использую хранимую процедуру, как показано ниже, для некоторых файлов, я возвращаю следующую ошибку. Что может быть причиной ?:SqlClient.SqlException (0x80131904) Идентификатор, начинающийся с
System.Data.SqlClient.SqlException (0x80131904): The identifier that starts with 'D:\DISKSEC\TETRAIBMSolution\TETRA\Data\IDJSKDOSD\Parsed\IOPDCVv3995ReportErgfdgfgdfIOPShun_e6c5b926-fb91-484e-bfe0-9c13a96f' is too long. Maximum length is 128.
хранимой процедуры я использую:
ALTER PROCEDURE [dbo].[BulkInsertDelimeted]
@InputFileName Varchar(700),
@TableName Varchar(200)
AS
BEGIN
declare @query varchar(6000)
set @Query ='BULK INSERT "' + @TableName + '" FROM "'+ @InputFileName+'"
WITH (DATAFILETYPE = ''char'', FIELDTERMINATOR = '','' , ROWTERMINATOR = ''\n'')';
print @query
exec (@query)
END
EDITED для дальнейшего обсуждения:
@InputFileName NVarchar(256),
@TableName NVarchar(128)
AS
BEGIN
declare @query NVarchar(max)
set @Query =N'BULK INSERT ' + N'.' +
QUOTENAME(@TableName) + N' FROM '+ QUOTENAME(@InputFileName, '''')
+ N' WITH (DATAFILETYPE = ''char'', FIELDTERMINATOR = '','' , ROWTERMINATOR = ''\n'')';
print @query
exec (@query)
END
из VB:
db.AddInParameter(cmd, "InputFileName", SqlDbType.NVarChar, fileToBeParsedPath) 'fileName
db.AddInParameter(cmd, "TableName", SqlDbType.NVarChar, ReportDatabase.TableName)
Я бы попробовал объявить их как Nvarchar (с соответствующими размерами или даже с «Nvarchar (MAX)»). Еще одна вещь, которую я бы сделал (чтобы проверить ее), - это объединить строки, которые вы устанавливаете в @Query var, как Nvarchars, размещая перед открытием фактической строки, так же: 'set @Query = n'BULK INSERT" '+ CAST (@TableName AS NVARCHAR (MAX) + n' "FROM" '+ CAST (@InputFileName AS NVARCHAR (MAX) + n' " WITH (DATAFILETYPE = '' char '', FIELDTERMINATOR = '', '' , ROWTERMINATOR = '' \ n '') '; ' –
Удостоверьтесь, что тип данных столбца - varchar (max) – Gericke
. Я поместил varchar (MAX) в каждый столбец в моей таблице и внутри BULK everyfield в качестве varchar (MAX) той же ошибки – unknown