Отсекание части строки при вставке в таблицу Sql Server. VBS
Добрый день. Столкнулся с проблемой вставки данных в таблицу Sql Server - данные в одном столбце отсекаются. Причину этому найти так и не смог. Прошу вашей помощи.
Одна и та же строка "abcdefghij_abcdefghij" в одном столбце "BCF_Name" содержится полностью, а в столбце "BTS_Name" - лишь первые 10 символов.
Структура таблицы следующая:
PHP код:
CREATE TABLE dbo.[2GEvD]
(
id INT IDENTITY NOT NULL,
starttime DATE NOT NULL,
BSC_Name VARCHAR (24) NOT NULL,
BCF_Name VARCHAR (24) NOT NULL,
BTS_Name VARCHAR (24) NOT NULL,
CellId INT NOT NULL,
SDCCH_traffic_ave FLOAT,
SDCCH_congest_time FLOAT,
SDCCH_real_blocking FLOAT,
Total_HO_failure FLOAT,
Total_HO_success FLOAT,
TCH_drop_call FLOAT,
TCH_call_block FLOAT,
Total_FTCH_seizure_time FLOAT,
Total_HTCH_seizure_time FLOAT,
CSSR_voice FLOAT,
TCH_traffic_sum FLOAT,
UL_gprs_RLC FLOAT,
DL_gprs_RLC FLOAT,
UL_egprs_RLC FLOAT,
DL_egprs_RLC FLOAT,
Drop_Call_Cell FLOAT,
Drop_Call_Bss FLOAT,
Drop_Call_Plmn FLOAT,
objstyle VARCHAR (100),
sw_geometry IMAGE,
CONSTRAINT PK_2GEvD PRIMARY KEY (id)
)
GO
CREATE INDEX CellId_2GEvD
ON dbo.[2GEvD] (CellId)
GO
CREATE INDEX Date_2GEvD
ON dbo.[2GEvD] (starttime)
GO
Заполнение остальных полей происходит из Excel.
Код:
Код:
Dim i
Dim sql
Dim cmd
Dim ConnectionString
ConnectionString = _
"Provider=SQLOLEDB;" & _
"Data Source=xxx;" & _
"Initial Catalog=xxx;" & _
"User Id = xxx;" & _
"Password = xxx"
Set sql = CreateObject("ADODB.Connection")
sql.Open ConnectionString
for i = 2 to range.Rows.Count
Set cmd = Nothing
Set cmd = CreateObject("ADODB.Command")
Set cmd.ActiveConnection = sql
cmd.CommandType = 4
cmd.CommandText = "[dbo].[InsertInto2GEvD]"
cmd.Parameters.Append cmd.CreateParameter("starttime", 7, 1, 0, range.Cells(i,1).Text)
cmd.Parameters.Append cmd.CreateParameter("BSC_Name", 200, 1, -1, range.Cells(i,2).text)
cmd.Parameters.Append cmd.CreateParameter("BCF_Name", 200, 1,-1, "abcdefghij_abcdefghij")
cmd.Parameters.Append cmd.CreateParameter("BTS_Name", 200, 1, -1, "abcdefghij_abcdefghij")
cmd.Parameters.Append cmd.CreateParameter("CellId", 3, 1, 0, GetCellIdFromBTSName(range.Cells(i,4).text))
cmd.Parameters.Append cmd.CreateParameter("SDCCH_traffic_ave", 5, 1, 0, range.Cells(i,5).Value)
cmd.Parameters.Append cmd.CreateParameter("SDCCH_congest_time", 5, 1, 0, range.Cells(i,6).Value)
cmd.Parameters.Append cmd.CreateParameter("SDCCH_real_blocking", 5, 1, 0, range.Cells(i,7).Value)
cmd.Parameters.Append cmd.CreateParameter("Total_HO_failure", 5, 1, 0, range.Cells(i,8).Value)
cmd.Parameters.Append cmd.CreateParameter("Total_HO_success", 5, 1, 0, range.Cells(i,9).Value)
cmd.Parameters.Append cmd.CreateParameter("TCH_drop_call", 5, 1, 0, range.Cells(i,10).Value)
cmd.Parameters.Append cmd.CreateParameter("TCH_call_block", 5, 1, 0, range.Cells(i,11).Value)
cmd.Parameters.Append cmd.CreateParameter("Total_FTCH_seizure_time", 5, 1, 0, range.Cells(i,12).Value)
cmd.Parameters.Append cmd.CreateParameter("Total_HTCH_seizure_time", 5, 1, 0, range.Cells(i,13).Value)
cmd.Parameters.Append cmd.CreateParameter("CSSR_voice", 5, 1, 0, range.Cells(i,14).Value)
cmd.Parameters.Append cmd.CreateParameter("TCH_traffic_sum", 5, 1, 0, range.Cells(i,15).Value)
cmd.Parameters.Append cmd.CreateParameter("UL_gprs_RLC", 5, 1, 0, range.Cells(i,16).Value)
cmd.Parameters.Append cmd.CreateParameter("DL_gprs_RLC", 5, 1, 0, range.Cells(i,17).Value)
cmd.Parameters.Append cmd.CreateParameter("UL_egprs_RLC", 5, 1, 0, range.Cells(i,18).Value)
cmd.Parameters.Append cmd.CreateParameter("DL_egprs_RLC", 5, 1, 0, range.Cells(i,19).Value)
cmd.Parameters.Append cmd.CreateParameter("Drop_Call_Cell", 5, 1, 0, range.Cells(i,20).Value)
cmd.Parameters.Append cmd.CreateParameter("Drop_Call_Bss", 5, 1, 0, range.Cells(i,21).Value)
cmd.Parameters.Append cmd.CreateParameter("Drop_Call_Plmn", 5, 1, 0, range.Cells(i,22).Value)
cmd.Execute
Next
sql.Close
Хранимая процедура:
PHP код:
CREATE PROCEDURE [dbo].[InsertInto2GEvD]
@starttime DATE,
@BSC_Name VARCHAR(10),
@BCF_Name VARCHAR(24),
@BTS_Name VARCHAR(10),
@CellID INTEGER,
@SDCCH_traffic_ave float,
@SDCCH_congest_time float,
@SDCCH_real_blocking float,
@Total_HO_failure float,
@Total_HO_success float,
@TCH_drop_call float,
@TCH_call_block float,
@Total_FTCH_seizure_time float,
@Total_HTCH_seizure_time float,
@CSSR_voice float,
@TCH_traffic_sum float,
@UL_gprs_RLC float,
@DL_gprs_RLC float,
@UL_egprs_RLC float,
@DL_egprs_RLC float,
@Drop_Call_Cell float,
@Drop_Call_Bss float,
@Drop_Call_Plmn float
AS
BEGIN
INSERT INTO [dbo].[2GEvD] (starttime, BSC_Name, BCF_Name, BTS_Name, CellId, SDCCH_traffic_ave, SDCCH_congest_time, SDCCH_real_blocking, Total_HO_failure, Total_HO_success, TCH_drop_call, TCH_call_block, Total_FTCH_seizure_time, Total_HTCH_seizure_time, CSSR_voice, TCH_traffic_sum, UL_gprs_RLC, DL_gprs_RLC, UL_egprs_RLC, DL_egprs_RLC, Drop_Call_Cell, Drop_Call_Bss, Drop_Call_Plmn)
VALUES (@starttime,@BSC_Name,@BCF_Name,@BTS_Name,@CellID,@SDCCH_traffic_ave ,@SDCCH_congest_time ,@SDCCH_real_blocking ,@Total_HO_failure ,@Total_HO_success ,@TCH_drop_call ,@TCH_call_block ,@Total_FTCH_seizure_time ,@Total_HTCH_seizure_time ,@CSSR_voice ,@TCH_traffic_sum ,@UL_gprs_RLC ,@DL_gprs_RLC ,@UL_egprs_RLC ,@DL_egprs_RLC ,@Drop_Call_Cell ,@Drop_Call_Bss ,@Drop_Call_Plmn)
END
Ранее объявлен range, с ним проблем нет. Функция GetCellIdFromBTSName - просто возвращает номер станции. Уже долгое время ищу причину, никак найти не могу.
Изначально думал, что отсекание проходит на стороне сервера, но при выполнении запроса из Management Studio вставка проходит полностью.
Строка "abcdefghij_abcdefghij" приведена как пример. В таблице храняться немного другие данные вида: NN(*), где * - символы, количесвто которых не превышает 15.
|