Вопросы с тегами [sql-server]

0

голосов
1

ответ
31

Просмотры

SQL Server - Вставить 2M + записи в SQL скрипт с 7000 строк на вставке

Я ищу любое предложение для обхода 1000 строк на пределе вставки в SQL Server. У меня есть MySQL скрипт дампа, который имеет несколько 100 строк, каждая строка представляет собой вставку заявление, которое содержит прибл 7000 строк. Я не могу вставить, что непосредственно в SQL Server, из-за лимита в 1000 строк на вставке. Есть ли «легкий» обходной путь или только один из способов является проблемно идентификации строк и создавать вставки для каждой строки?
Daniel Hanczyc
3

голосов
2

ответ
49

Просмотры

Как я могу получить лучшую производительность по статье накидной на T-SQL

У меня есть три таблицы. Каждая таблица содержит более 3M строк. Я бегу следующий код: SELECT * FROM (SELECT col_1, col_2, col_3, [дата], 1 как тип ОТ table_1 СОЕДИНЕНИЕ ВЫБОР col_1, col_2, col_3, [дата], 2 как тип ОТ table_2 СОЕДИНЕНИЕ ВЫБОР col_1, col_2, col_3, [дата], 3, как тип из table_3) А.С. ТБ ТБ. [дата] между (датой_начал) И (дата_окончания) ORDER BY [дата] DESC OFFSET п строк FETCH СЛЕДУЮЩЕГО т строк ТОЛЬКО Но когда я получить большой интервал дат прогона запроса медленнее , Например: Когда я получаю 2019-01-01 и 2019-04-01 интервал запроса запустить около 13-14 секунд: Этот результат очень плохо. Я хочу, чтобы получить результат в течение 1 секунды. Что я могу сделать?
0

голосов
0

ответ
11

Просмотры

рассчитать по формулам состоят из одной строки и разделены специальным символом

Тест DDL с КТР в качестве (выберите '0001' ID, 1 InputValue, 'Кол-во * 2; Кол-во * 5' Формулы объединение всех выберите '0002' ID, 2 InputValue, 'Кол-во + 4; Кол-во / 5' Формулы) выберите * в Т от КТР --query данных ID, InputValue, формулы 0001, 1, Кол-во * 2; Кол-во * 5 0002, 2, Кол-во + 4; Кол-во / 5 Ожидаемое вызов SomeFunction или SQLQuery получить результат ниже ID, InputValue, Формулы, Qty1, Qty2 0001, 1, Кол-во * 2; Кол-во * 5, 2, 5 0002, 2, Кол-во + 4; Кол-во / 5, 6, 0,4 Логика формула разрезается; InputValue использует первую формулу для расчета поля qty1 InputValue использует вторую формулу для вычисления поля qty2 My Test В настоящее время мое решение заключается в использовании программирования C #, чтобы решить эту проблему, но производительность имеет большую проблему, когда данные более чем 100000, используя (вар сп = Соединение) {cn.Open (); вар Данные = cn.Query (@»с КТР в качестве (выберите '0001' ID, 1 InputValue, 'Кол-во * 2; Кол-во * 5' Формулы объединение всех выберите '0002' ID, 2 InputValue, 'Кол-во + 4; Кол-во / 5' Формулы) выберите * в #T из КТР, выберите * от #T; «); Результат переменная = datas.Select (с => {вар обр = (s.Formulas как строка) .split ( ';'); вар qtyFor = обр [0] .Надеть ( "Кол-во", Convert.ToString (s.InputValue )); вар qty1For = обр [1] .Надеть ( "Кол-во", Convert.ToString (s.InputValue)); вар кол-во = новый DataTable () Вычислить (qtyFor, string.Empty). вар qty1 = новый DataTable () Вычислить (qty1For, string.Empty). возвращает новый {s.ID, s.InputValue, s.Formulas, Кол-во = кол-во, Qty1 = qty1}; }); ЕЫпе (результат); / * Результат: идентификатор InputValue, Формулы, Qty1, Qty2 0001, 1, Кол-во * 2; Кол-во * 5, 2, 5 0002, 2, Кол-во + 4; Кол-во / 5, 6, 0,4 * /} Интернет Тест Ссылка Я знает, что структура таблицы странно, но это старая система, без исходного кода
IT WeiHan
1

голосов
2

ответ
844

Просмотры

Как я могу бросить ошибку, если параметр равен нулю или 0?

У меня есть эта хранимая процедура: CREATE PROCEDURE [DBO] [get_test_status] @CreatedBy INT OUTPUT, @TestStatusId INT OUTPUT, @UserTestId INT, INT @UserId AS Как я могу бросить ошибка, если параметр @UserId является нулевым или нулевым.? Вот что я пытался, но он дает ошибку синтаксиса: IF (@UserId = 0 ИЛИ @UserId IS NULL) БРОСИТЬ 70001, «UserId: Не может быть нулевым или нулевым», 1
Alan2
0

голосов
1

ответ
19

Просмотры

How do I allow a machine to connect to local SQL file

Я в настоящее время работаю над системой EPOS для друзей магазина, я в настоящее время получить его слишком протестировать возможности, убедившись, что дизайн и т.д. отлично. Я создал базы данных на основе SQL Service, но проблема, кажется, тоже будет он получать System.Data.SqlClient.SqlException ошибки (0x80131904): Произошла ошибка сети связанных или экземпляра конкретных при установлении соединения с SQL Server , Сервер не найден или не был доступен. Убедитесь, что имя экземпляра правильно и что SQL Server настроен для удаленных подключений. Я предполагаю, что это потому, что он не получил сервер управления SQL установлен? Мне было интересно, если есть в любом случае, что я могу включать в себя все необходимые файлы SQL для него, так что он может просто открыть программу и тогда это соединить? Pastebin Моей строки соединения внутри моего кода: . Строка connString = Settings.Default [ "DBConnectioNString"] ToString (); SqlConnection Conn = новый SqlConnection (connString); если (conn.State = System.Data.ConnectionState.Open!) conn.Open (); DBConnectionString, который генерируется при создании БД на основе службы: Источник данных = (LocalDB) \ MSSQLLocalDB; AttachDbFilename = | DataDirectory | \ Базы данных \ DB.mdf; Integrated Security = True Когда я построить решение, он содержит файл базы данных, где именно Я положил его в VS17, какие-либо идеи о том, как я могу сделать эту работу на своей машине без него того, чтобы загрузить SQL Management DB? Если кто-то может мне точку в правильном направлении, которое будет оценено, спасибо. ConnectionState.Open) conn.Open (); DBConnectionString, который генерируется при создании БД на основе службы: Источник данных = (LocalDB) \ MSSQLLocalDB; AttachDbFilename = | DataDirectory | \ Базы данных \ DB.mdf; Integrated Security = True Когда я построить решение, он содержит файл базы данных, где именно Я положил его в VS17, какие-либо идеи о том, как я могу сделать эту работу на своей машине без него того, чтобы загрузить SQL Management DB? Если кто-то может мне точку в правильном направлении, которое будет оценено, спасибо. ConnectionState.Open) conn.Open (); DBConnectionString, который генерируется при создании БД на основе службы: Источник данных = (LocalDB) \ MSSQLLocalDB; AttachDbFilename = | DataDirectory | \ Базы данных \ DB.mdf; Integrated Security = True Когда я построить решение, он содержит файл базы данных, где именно Я положил его в VS17, какие-либо идеи о том, как я могу сделать эту работу на своей машине без него того, чтобы загрузить SQL Management DB? Если кто-то может мне точку в правильном направлении, которое будет оценено, спасибо. любые идеи о том, как я могу сделать эту работу на своей машине без него того, чтобы загрузить SQL Management DB? Если кто-то может мне точку в правильном направлении, которое будет оценено, спасибо. любые идеи о том, как я могу сделать эту работу на своей машине без него того, чтобы загрузить SQL Management DB? Если кто-то может мне точку в правильном направлении, которое будет оценено, спасибо.
Kevin Gorman
1

голосов
2

ответ
1.8k

Просмотры

на каких уровнях продукта Sql Server, захват Изменения данных (CDC) функция доступен?

У меня есть проект, который включает в себя использование Sql Server 2012 Standard Edition. Этот проект должен иметь Capture Sql Server Change Data включен (CDC). Является ли CDC доступны в Sql Server Standard Edition?
Eugene Goldberg
0

голосов
1

ответ
16

Просмотры

Выполнение сценария для добавления первичных ключей для всех таблиц возвращает ошибку

Я хочу, чтобы добавить первичный ключ IDD каждый «Temp ...» таблицу в схеме. Я пытаюсь сделать это следующим образом: DECLARE @addId VARCHAR (MAX) = «»; ВЫБОР @addId = @addId + ALTER TABLE [ '+ TABLE_NAME +] ADD IDD INT IDENTITY (1,1); ALTER TABLE [' + TABLE_NAME +] ADD PRIMARY KEY (IDD); ' ОТ INFORMATION_SCHEMA.TABLES ГДЕ table_name LIKE '% Temp' EXEC (@addId); Я вернулся с такой ошибкой: Несколько столбцов идентификаторов, определенных для таблицы «TempTable». Только один столбец идентификаторов в таблице допускается. Что такое мой проступок? EDIT: Там нет первичного ключа уже определены в таблицах.
Passer7by
1

голосов
1

ответ
413

Просмотры

SQL Server transactions errors due to different Isolation Levels

MyDatabase», потому что оператор был запущен под изоляцией моментальных снимков, но сделка не начнется в изоляции моментальных снимков. Вы не можете изменить уровень изоляции транзакции снимка после того, как сделка началась, если сделка не было изначально под уровнем изоляции моментального снимка. Не удается выполнить откат t2. Ни одна сделка или точка сохранения этого имени не было найдено. Если удалить транзакции и запустить его, как простые хранимые процедуры, она отлично работает. Это почему? Если удалить транзакции и запустить его, как простые хранимые процедуры, она отлично работает. Это почему? Если удалить транзакции и запустить его, как простые хранимые процедуры, она отлично работает. Это почему?
Offir Pe'er
1

голосов
2

ответ
134

Просмотры

Чтение данных из CSV-файла и вставить его в базу данных

У меня есть требование, чтобы прочитать данные из файла CSV и заселить его в базу данных. Я использую BCP командной строки утилиты для этой цели. Моя CSV-файл выглядит следующим образом: First_name, Last_name, EmpID, компании, языки "Джек", "Томас", "57616", "IBM", "C C ++ JAVA COBOL PERL SQL" "Тим", "Кук", "10001 »,„Яблоко“,„Python C ++ Java XML“Как вы видите, последний столбец (языки) имеет значения, каждый на новой строке. Команда БКПА сценария для проверки строки разделителя и, как только он получает первое значение из последнего столбца, он завершает запрос вас, пожалуйста, подсказывает, как разобрать это с помощью BCP?
Abhishek Pandey
1

голосов
1

ответ
46

Просмотры

Хранимая процедура возвращения 0 на идентичностью области видимости

Я использую эту же процедуру на старом проекте, и он работает на некоторое время, так что я не могу понять, что не так с этим и почему она возвращает 0, когда я вставляю. ЕСЛИ OBJECT_ID ( 'dbo.spInsertArtigo') IS NOT NULL ПРОЦЕДУРА DROP spInsertArtigo GO CREATE PROCEDURE spInsertArtigo @IdUser INT, ----- ----- hArtigos @MotivoCriacao NVARCHAR (100) = NULL, @CodeRequest TINYINT, @Cliente TINYINT , @ReferenciaCliente NVARCHAR (50), @ReferenciaInterna NVARCHAR (7), @Indice NVARCHAR (10), @Projecto NVARCHAR (50), @Desenho NVARCHAR (50), @CadenciaMensal INT, @NumCOMDEV NVARCHAR (50), @QTDLancamentoFormas INT , @CapacidadeReal NVARCHAR (20) = NULL, то @Observacoes NVARCHAR (100) = NULL, ----- ----- hCaixa @TipoCaixa NVARCHAR (50) = NULL, то @QTDPecasCaixa INT = NULL, то CelulaProducao, Песо, NumKanbansProducao, IdArtigo) ЗНАЧЕНИЯ (@TipoCaixa, @QTDPecasCaixa, @UnidadeProducao, @CelulaProducao, @Peso, @NumKanbansProducao, SCOPE_IDENTITY ()) INSERT INTO hMetodologiaProducao (TipoMetodologia, QTDMetodoProducao, IdArtigo) VALUES (@TipoMetodologia, @QTDMetodoProducao, SCOPE_IDENTITY ()) INSERT INTO hData (DataCriacao, DataAlteracao, IdArtigo) ЗНАЧЕНИЯ (GETDATE (), GETDATE (), SCOPE_IDENTITY ()) ВЫБОР @ID = SCOPE_IDENTITY () END END Это где я вызвать процедуру общественности статической INT InsertRequisicao (Requisicao REQ) {строка CONSTR = ConfigurationManager.ConnectionStrings [ "GestaoRequisicoes_ConnectionString"] ConnectionString.; Строка запроса = "spInsertArtigo"; попробуйте {используя (SqlConnection кон = новый SqlConnection (CONSTR)) с использованием (SqlCommand CMD = новый SqlCommand (запрос, жулик)) {cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue ( "@ IdUser", HttpContext.Current.User.Identity.Name); cmd.Parameters.AddWithValue ( "@ MotivoCriacao", req.MotivoCriacao); cmd.Parameters.AddWithValue ( "@ CodeRequest", req.CodeRequest); cmd.Parameters.AddWithValue ( "@ Cliente", req.Cliente); cmd.Parameters.AddWithValue ( "@ ReferenciaCliente", req.ReferenciaCliente); cmd.Parameters.AddWithValue ( "@ ReferenciaInterna", req.ReferenciaInterna); cmd.Parameters.AddWithValue ( "@ Indice" , Req.Indice); cmd.Parameters.AddWithValue ( "@ Projecto", req.Projecto); cmd.Parameters.AddWithValue ( "@ Desenho", req.Desenho); cmd.Parameters.AddWithValue ( "@ CadenciaMensal", req.CadenciaMensal); cmd.Parameters.AddWithValue ( "@ NumCOMDEV", req.NumCOMDEV); cmd.Parameters.AddWithValue ( "@ QTDLancamentoFormas", req.NumLancamentoFormas); cmd.Parameters.AddWithValue ( "@ CapacidadeReal", req.CapacidadeReal); cmd.Parameters.AddWithValue ( "@ TipoCaixa", req.TipoCaixa); cmd.Parameters.AddWithValue ( "@ QTDPecasCaixa", req.NumPecasCaixa); cmd.Parameters.AddWithValue ( "@ UnidadeProducao", req.UnidadeProducao); cmd.Parameters. AddWithValue ( "@ CelulaProducao", req.CelulaProducao); cmd.Parameters.AddWithValue ( "@ Песо", req.Peso); cmd.Parameters.AddWithValue ( "@ NumKanbansProducao", req.NumKanbansProducao); cmd.Parameters.AddWithValue ( "@ TipoMetodologia", req.TipoMetodologia); cmd.Parameters.AddWithValue ( "@ QTDMetodoProducao", req.NumMetodoProducao); cmd.Parameters.AddWithValue ( "@ Observacoes", req.Observacoes); con.Open (); вернуть Convert.ToInt32 (cmd.ExecuteScalar ()); }} Задвижка (SqlException ех) {бросок ех; }} Я думаю, что все выглядит нормально ... Процедура точно так же, как и другие, и я не думаю, что там»
Jackal
1

голосов
2

ответ
83

Просмотры

Как Увеличивает номер с помощью текущей даты

У меня есть таблица StaffLeave в SQL Server со следующими столбцами: DateStarted, DaysTaken, DaysOnLeave и LeaveStatus. После того, как сотрудники в отпуске текущей даты следует держать подсчет дней в отпуске в колонке DaysOnLeave и когда DaysTaken == DaysOnLeave статус отпуска должен изменен. Это то, что я сделал до сих пор, я прочитал DateStarted из базы данных, используя ExecuteReader и хранить дату в переменный. Затем я сравниваю текущую дату с ним. Если текущая дата больше, то я увеличиваем DaysOnLeave один. У меня возникли проблемы при проверке второй, третий, четвертый день и так далее, где текущая дата будет больше на 2,3,4 дней и так далее.
muhdamean
1

голосов
3

ответ
266

Просмотры

Перемещение данных базы данных SQL Server для SAP BW

Я прочитал несколько статей о переносе данных из SAP BW и в SQL Server. Я не могу найти ни одной статьи на перемещение данных из SQL Server для SAP BW, это даже возможно, и если это так, что было бы лучшим способом справиться с этим?
Etienne
1

голосов
1

ответ
40

Просмотры

min(count(*)) over… behavior?

Я пытаюсь понять поведение выбора ....., MIN (COUNT (*)) над (раздел по hotelid) VS выбрать ....., COUNT (*) над (раздел по hotelid) Ok. У меня есть список отелей (1,2,3) В каждом отеле есть отделы. На каждых департаментах есть рабочие. Мои данные выглядит следующим образом: SELECT * FROM данных Ok. Глядя на этот запрос: выберите hotelid, DepartmentID, CNT = COUNT (*) над (раздел по hotelid) из группы данных по hotelid, DepartmentID ORDER BY hotelid Я прекрасно понимаю, что здесь происходит. В этот результирующий набор, разделение по hotelId, мы рассчитываем видимые строки. Но посмотрите, что происходит с этим запросом: выберите hotelid, DepartmentID, min_cnt = мин (COUNT (*)) над (раздел по hotelid) из группы данных по hotelid, DepartmentID ORDER BY hotelid Вопрос: Где эти цифры пришли из? Я не» т понять, как добавление мин вызвало этот результат? мин чего? Может кто-то пожалуйста, объясните, как это расчет делается? играть на скрипке
Royi Namir
1

голосов
1

ответ
53

Просмотры

Почему я не могу использовать функцию форматирования в то время как Jet-SQL в T-SQL?

Я пытаюсь преобразовать один из моих запросов MS Access, содержащих формат с точкой зрения SQL Server. У меня есть мнение, подключенного к MS Access в виде связанных таблиц. Я смотрел на этой MS Access к SQL-сервер накрутка-листу для преобразования Jet-SQL в T-SQL. Шпаргалка говорит: Доступ: Выберите формат (значение, FormatSpecification) (примечание: это всегда возвращает строковое значение) T-SQL: Не делайте этого в T-SQL; формат данные на вашем фронтальном приложении или отчете я не могу форматировать данные на моем переднем конце, так как представление SQL Server связан в виде связанных таблиц. Я не могу иметь функцию форматирования в таблицах. Шпаргалка не дает никаких объяснений о том, почему не сделать это в T-SQL. В чем причина не использовать формат при преобразовании Jet-SQL в T-SQL?
jedu
1

голосов
1

ответ
31

Просмотры

Функция T-SQL Json_modify

Функция T-SQL JSON_MODIFY имеет некоторую проблему его добавление обертки при добавлении новой пары значений, как заявляет @jsonstring VARCHAR (макс) = '{ "Ширину": "100%", "длина": "45%"}' выберите JSON_MODIFY ( @ jsonstring, 'добавить $ .height', '50%») - {выход "Ширина": "100%", "Длина": "45%", "Рост": [ "50%"]} - Его добавление обертка я неспособен удалить эту оболочку - ожидая выхода { «Ширина»: «100%», «Длина»: «45%», «Высота»: «50%»}
Kumar_2002
1

голосов
3

ответ
71

Просмотры

GROUP BY заявление с командой PIVOT в T-SQL

У меня есть запрос SQL, который включает в себя команду PIVOT, которая создает правильную таблицу, но теперь мне нужно GROUP BY одной из колонн. Когда я пытаюсь добавить GROUP BY заявление, она возвращается следующее сообщение об ошибке: «Колонка„PivotTable.1“недопустим в списке выбора, поскольку он не содержится ни в статистической функции или предложения GROUP BY.» SELECT [Load ID], [1], [2], [3], [4] ОТ TMS_Load_Stops PIVOT (MIN ([Стоп Zip]) для [Sequence] В ([1], [2], [3], [4])) сводная таблица; Исходный код дает следующие результаты: И я хотел бы, чтобы результаты были следующим образом (значения случайных чисел для объяснения целей):
C1-14MP
1

голосов
5

ответ
74

Просмотры

как найти таблицы, которые имеют столбцы значения, если я не знаю таблицу

У нас есть приложение, используемое в работе, которая была создана третьей стороной. Таким образом, мы имеем доступ к пользовательскому интерфейсу и не кода серверной. В этом приложении есть выпадающий список. У меня есть доступ к MSSQL БД, что это приложение работает на. Мне нужно знать, где этот выпадающий список получает информацию от но я не знаю, какую таблицу он использует (потому что я не могу проверить код непосредственно). Есть ли запрос, я могу написать для поиска по всей БД для таблиц, имеющих столбцы, которые содержат определенное значение? Значения DropDownList являются: WebsiteAPP СЭП приложение Walkin BotLead
Kalyn
1

голосов
2

ответ
37

Просмотры

Показать все варианты, если пользователь администратор и только один вариант, если не админ в SQL запросе

У меня есть хранимая процедура, которая возвращает значения из таблицы. То, что я хочу, чтобы вернуть конкретные значения на основе из вариантов 0, 1, 2, если пользователь не администратор, а затем, если пользователь администратора, будет отображаться все параметры, и это будет происходить в одном запросе. Вот пример кода. ЕСЛИ (@isAdmin = 'истина') НАЧАТЬ Выбор TOP 10 * FROM [DBO]. [Inventorydetails] ГДЕ InventoryType = 'активный' КОНЕЦ ИНАЧЕ НАЧАТЬ Выбор TOP 10 * FROM [DBO]. [Inventorydetails] ГДЕ InventoryType = 'активный' И OptionType = 0 END Я хочу, чтобы сократить свой код во что-то вроде этого ... SELECT TOP 10 * FROM [DBO]. [inventorydetails] WHERE InventoryType = 'активный' и OptionType = случай, когда @isAdmin! = 'истинный' THEN 0 END но это не работает. Есть идеи?
jned29
1

голосов
1

ответ
56

Просмотры

Как использовать 2 Если условия с Update

У меня есть следующий запрос на обновление; UPDATE службы SET PathNameEn = (SELECT NameEn FROM службы WHERE ID = 430) + '>' Я хочу добавить еще WHERE условие, которое WHERE ID от 430 до 435 я пробовал: UPDATE службы SET PathNameEn = (SELECT NameEn FROM службы WHERE ID = 430 И идентификатор от 430 до 435) + «>» Но это не сработало
hazem
1

голосов
2

ответ
45

Просмотры

Как я могу иметь UNION псевдонимов столбцов уважения?

Извините за плохой титул, я не мог придумать ничего лучшего. Вы можете редактировать. Я должен работать с таблицей БД, которая использует один столбец для хранения различных типов информации (фамилия, если лицо, название компании, если компания). Кошмар, я знаю, но это то, что она есть. Для того, чтобы различать смысл, есть еще один столбец с целым числом, которое определяет тип, что в столбце Имя. Схема этой таблицы выглядит следующим образом (упрощенный): ID INT DTYPE имя INT VARCHAR (50) Таким образом, образец может выглядеть следующим образом: ID имя DTYPE ----------------- ---------- 1 0 2 0 Smith Trump 3 1 ABC Ltd. 4 1 XYZ Ltd. Я пытаюсь нормализовать это с помощью следующего кода T-SQL: с компаниями AS (SELECT ID, имя AS компания ОТ NameTable ГДЕ DTYPE = 1), люди AS (SELECT ID, имя AS человека от NameTable WHERE DTYPE = 0), SELECT * FROM компании UNION ALL SELECT * FROM людей; То, что я надеялся получить новый стол со схемой: ID DTYPE компании человека, или в виде таблицы: ID DTYPE лицо компании ----------------------- ------------------- 1 0 2 0 Smith Trump 3 1 ABC Ltd. 4 1 XYZ Ltd. вместо этого поля теперь просто называется человек вместо имени, но он по-прежнему только одно поле для 2-х типов информации. Я понимаю, что я мог бы просто создать новую таблицу и вставить каждый частичный результат в этом, но это, кажется, не должно быть более простым способом. Любые советы оценили. SELECT * FROM компании UNION ALL SELECT * FROM людей; То, что я надеялся получить новый стол со схемой: ID DTYPE компании человека, или в виде таблицы: ID DTYPE лицо компании ----------------------- ------------------- 1 0 2 0 Smith Trump 3 1 ABC Ltd. 4 1 XYZ Ltd. вместо этого поля теперь просто называется человек вместо имени, но он по-прежнему только одно поле для 2-х типов информации. Я понимаю, что я мог бы просто создать новую таблицу и вставить каждый частичный результат в этом, но это, кажется, не должно быть более простым способом. Любые советы оценили. SELECT * FROM компании UNION ALL SELECT * FROM людей; То, что я надеялся получить новый стол со схемой: ID DTYPE компании человека, или в виде таблицы: ID DTYPE лицо компании ----------------------- ------------------- 1 0 2 0 Smith Trump 3 1 ABC Ltd. 4 1 XYZ Ltd. вместо этого поля теперь просто называется человек вместо имени, но он по-прежнему только одно поле для 2-х типов информации. Я понимаю, что я мог бы просто создать новую таблицу и вставить каждый частичный результат в этом, но это, кажется, не должно быть более простым способом. Любые советы оценили. ID DTYPE лицо компании ------------------------------------------ 1 0 Smith 2 0 Trump 3 1 ABC Ltd. 4 1 XYZ Ltd. вместо этого поля теперь просто называют человека вместо имени, но это еще только одно поле для 2-х типов информации. Я понимаю, что я мог бы просто создать новую таблицу и вставить каждый частичный результат в этом, но это, кажется, не должно быть более простым способом. Любые советы оценили. ID DTYPE лицо компании ------------------------------------------ 1 0 Smith 2 0 Trump 3 1 ABC Ltd. 4 1 XYZ Ltd. вместо этого поля теперь просто называют человека вместо имени, но это еще только одно поле для 2-х типов информации. Я понимаю, что я мог бы просто создать новую таблицу и вставить каждый частичный результат в этом, но это, кажется, не должно быть более простым способом. Любые советы оценили. Я понимаю, что я мог бы просто создать новую таблицу и вставить каждый частичный результат в этом, но это, кажется, не должно быть более простым способом. Любые советы оценили. Я понимаю, что я мог бы просто создать новую таблицу и вставить каждый частичный результат в этом, но это, кажется, не должно быть более простым способом. Любые советы оценили.
vic
1

голосов
1

ответ
43

Просмотры

почему FORMAT не работает с expandproperty

Я пытаюсь проверить, если последняя строка в таблице был добавлен в текущий момент времени, используя следующую проверку сценария: $ updateTime = «SELECT TOP 1 FORMAT ([Update_Time],„M / D / YYYY ч: мм тт“) ОТ [DBO] [$ Таблица] ORDER BY uPDATE_TIME DESC». | Выберите -ExpandProperty UPDATE_TIME; Перед тем как добавить формат, свойство расширения работает очень хорошо, как предполагалось получать мне последнее значение UPDATE_TIME $ updateTime = "SELECT TOP 1 [UPDATE_TIME] FROM [DBO] [$ Таблица] ORDER BY UPDATE_TIME DESC". | Выберите -ExpandProperty UPDATE_TIME; Тем не менее, когда я добавил FORMAT в запрос, это приводит к ошибке: Выберите: Свойство «UPDATE_TIME» не может быть найдено. ... BLE] ORDER BY UPDATE_TIME DESC»| Выбрать -ExpandProperty UPDATE_TIME, мне нужно использовать формат, потому что я хочу, чтобы игнорировать секунды, или если есть далеко я могу игнорировать 1 второй разность между значением UPDATE_TIME и Get-Date значения, что было бы еще лучше. $ Сегодня = (Get-Date) .ToString ( 'M / d / гггг ч: мм тт'), если ($ updateTime -eq $ сегодня) {Write-Host "` r`n успешно создан на [$ updateTime]"} еще {Write-Host «` r`n нЕ генерируется в [сегодня] $»} с форматом, но не расширять свойство, я получаю этот выход:
Cataster
1

голосов
3

ответ
27

Просмотры

Как вы можете запросить на основе накопленной суммы одного столбца?

Поэтому предположим, у меня есть следующая таблица: Теперь предположим, что запрос на это: SELECT JobNo, WorkCenter, EstimMinutes из Списка WHERE WorkCenter = «Шлифование» Теперь предположим, что шлифовального ежедневно емкость 500 ежедневных минут, так что если бы я передать их график сегодняшний день, я только хочу, чтобы показать работу вплоть до работы, которая идет по 500-ю минуты. Таким образом, в этом случае, я хочу вернуть только те строки, выделены зеленым цветом, общее количество которых составляет 505 Всего по оценкам минут. Как бы я идти об этом? Я пытался делать: WHERE SUM (EstimMinutes) <500 Но это, очевидно, не работает. Не совсем уверен, если это возможно, чтобы сделать это, и если да, то в каком направлении я должен идти в. Любая помощь очень ценится
user1452574
1

голосов
2

ответ
38

Просмотры

CASE statement: Conversion failed when converting the varchar value 'no ed is required' to data type int

У меня есть сазе в моем коде, я хочу, чтобы иметь строку на ELSE «» ENDbut получить эту ошибку: Конверсия удалось при преобразовании значения VARCHAR «не-е изд не требуется» к типу данных междунар. Это мой код: SELECT [ID Ticket], [Тип запроса], MAX (maxBuild), (случай, когда [edBuild Дата Документально] НЕ NULL AND [edBuild Дата Документально]> MAX (maxBuild) THEN (DATEDIFF (DAY, [ edBuild Дата Документально], MAX (MAXVAL))) ELSE '' END) AS 'дни принял от edBuild для проверки / если 0 не edbuild участвует' FROM (SELECT DISTINCT CreatedDateTime AS [билет, представленный], IncidentID AS [Ticket ID], [ titleT] (случай, когда OwnedbyTeamT = 'ххх' И ClosedDateTimeT «1899-12-30 00:00: 00,000' И TitleT LIKE '% е изд% Сложение' AND (TitleT не LIKE '% Dup%') THEN (ClosedDateTimeT) ELSE 'не требуется редактор' END) AS 'edBuild Дата Документально' FROM TaskView WHERE IncidentID = '2272516' OR IncidentID = '2221' OR IncidentID = '21211') AS TT GROUP BY [ID Ticket], [Запрос Тип], [MedBuild Дата документированной], MAX (maxBuild) есть ли способ, чтобы устранить эту ошибку? Спасибо ОТ TaskView ГДЕ IncidentID = '2272516' ИЛИ ​​IncidentID = '2221' ИЛИ ​​IncidentID = '21211') AS TT GROUP BY [ID Ticket], [Запрос Type], [MedBuild Дата Документально], MAX (maxBuild) есть ли способ устранить эту ошибку? Спасибо ОТ TaskView ГДЕ IncidentID = '2272516' ИЛИ ​​IncidentID = '2221' ИЛИ ​​IncidentID = '21211') AS TT GROUP BY [ID Ticket], [Запрос Type], [MedBuild Дата Документально], MAX (maxBuild) есть ли способ устранить эту ошибку? Спасибо
nina_dev
1

голосов
1

ответ
41

Просмотры

Найти годовой MAX и MIN на одного работника с использованием квартальных данных

Я работаю с базой данных в сервере SQL, который содержит квартальную квоту продаж работника в долларах США. В таблице я извлечения информации из моей содержит следующие столбцы: SalesQuotaKey (PK, INT NOT NULL) Служащий (FK, INT NOT NULL) DateKey (FK, INT NOT NULL) Календарный год (SMALLINT, NOT NULL) Календарь квартальный (TINYINT, NOT NULL) SalesAmountQuota (деньги, NOT NULL) Дата (даты и время, NOT NULL) столбец, содержащий SalesAmountQuota показывает квартальную квоту. Выборочные данные и ожидаемый результат для одного EmployeeID нижеприведенного Employeekey Datekey год Четверть SalesAmountquota Дата 1 272 20101229 2010 4 28000,00 2010-12-29 00: 00: 00,000 11 272 20110331 2011 1 7000,00 2011-03-31 00:00 : 00,000 21 272 20110701 2011 3 91000,00 2011-07-01 00: 00: 31 272 00,000 20110929 2011 3 140000, Я хочу создать обзор, который показывает как самый высокий когда-либо ежегодный квота продаж и самые низкие когда годовой объем продаж квота когда-либо для каждого EmployeeID (только за годы, когда все четыре квартальный квоты содержат значение), мне удалось найти самый высокий и самый низкий когда-либо ежеквартально продажи квоты на одного работника, используя формулировку ниже, но у меня возникают проблемы, чтобы создать заявление, которое получает самую высокую и самые низкие годовую квоту на одного работника. Любой, кто может мне помочь? Ваша помощь очень ценится. ВЫБОР A.EmployeeKey, MAX (A.SalesAmountQuota), как MaxQuota, Min (B.SalesAmountQuota) в качестве MinQuota ИЗ FactSalesQuota А, В, где FactSalesQuota A.SalesAmountQuota = B.SalesAmountQuota GROUP BY A.EmployeeKey ORDER BY A.EmployeeKey
YH93
1

голосов
2

ответ
52

Просмотры

Cast Null DateTime значение из базы данных?

Я выполнение простого ЗЕЬЕСТА, и я пытаюсь вернуть значение из столбца DateTime из 2012 таблицы SQL Server. Проблема заключается в том, что, когда я возвращать значение NULL DateTime Я не знаю, как управлять этим с моим кодом ниже. dtTrainingEnd = (DateTime) читатель [ "TrainingEnd"]; Я искал в течение последних нескольких дней на ответ и не могу найти что-то, что поможет мне. Я нашел подобные сообщения, но все-таки я не могу понять, как они могут помочь мне. Можете ли вы объяснить, как я могу проверить, если значение даты и времени возвращается из базы данных NULL? SqlConnection connRead = новый SqlConnection (connReadString); SqlCommand Comm = новый SqlCommand (); SqlDataReader читатель; строка SQL; DateTime dtTrainingEnd = DateTime.Now; INT iTrainingSwipeID = 123; SQL = "
Andy
1

голосов
1

ответ
32

Просмотры

Можно ли объединить 2 ЗЕЬЕСТА, которые будут использоваться в инструкции INSERT INTO заявления? [Дубликат]

Этот вопрос уже есть ответ здесь: Вставьте в табличном переменный с союзом 2 ответов У меня есть следующий SQL скрипт (упрощенно): DECLARE @table TABLE (col1 INT, INT, Col2 col3 INT); INSERT INTO @table SELECT, идентификатор, 1, количестве от сделки, при которых CustomerId = 10; INSERT INTO @table Выбор TOP (1) ID, 5, сумма - расходы от операций, ГДЕ CustomerId = 10 ORDER BY DESC идентификатора; В приведенном выше примере, я сначала вставить число записей в таблице varilable. затем вставить дополнительную запись, используя последнюю запись. Можно ли объединить 2 заявления в 1?
Ivan-Mark Debono
1

голосов
4

ответ
36

Просмотры

Как выбрать несколько столбцов с группой на один столбец

У меня есть .. Дата ID Кол-во 2019/5/1 A 11 2019/6/1 A 22 B 33 2019/7/1 2019/6/1 В 44 мне нужно данные ID и Кол-во на Max (дата) каждого идентификатора как ниже Дата ID Кол-во 2019/6/1 A 22 B 33 2019/7/1 Я использую .. выбрать максимум (дата), ID, Кол-во из таблицы группы по ID, Кол-во, но результат не то, что я ожидал
khomsan noptan
1

голосов
2

ответ
34

Просмотры

Разделить диапазон чисел в равных части SQL Sever

Я следующий запрос, чтобы разделить диапазон чисел по частям. Для экс: я есть диапазон чисел 200 и я должен группе число до 95 но результат приходит в обратном order.I присоединили ожидаемого результата объявить @MinValue BIGINT = 1 объявить @MaxValue BIGINT = 200; объявить @RowsPerGroup BIGINT = 95 объявить @ RowsPerGroup1 BIGINT = (@ RowsPerGroup1); с СРК (VAL, тт) как (выберите @MaxValue, (@MaxValue - @ RowsPerGroup1) объединение всех выберите RM-1, случай, когда RM-1 > @MinValue + @ RowsPerGroup1 затем гт-1 - @ RowsPerGroup1 еще @MinValue конец от СРК, где гт-1> = @MinValue) выберите гт как 'Start', Вэл как 'End', [Разница] = (Val-гт) +1 от заказа Src по выбору гт Asc (maxrecursion 0) Текущий результат: Начало Конец Разница 10 10 1 11 105 95 106 200 95 Ожидаемый результат: Pls дайте мне знать, где я делаю неправильно
Ljt
1

голосов
1

ответ
43

Просмотры

SQL Query - формат данные из тех же таблиц

У меня есть очень большой запрос, который возвращает данные в следующем формате:ID ДЕЙСТВИЯ ДАТА ----------------------------------------------- ----------- 1 ПУСК 2018-02-15 1 ДЕЙСТВИЯ 1 2018-02-10 1 ДЕЙСТВИЕ 2 2018-02-01 1 ПУСК 2018-02-02 1 ПУСК 2018-02-03 1 ПУСК 2018-02-11 1 ПУСК 2018-02-13 2 ПУСК 2018-02-15 2 ДЕЙСТВИЯ 1 2018-02-10 2 ДЕЙСТВИЯ 2 2018-02-05 2 ПУСК 2018-02-02 2 RUN 2018-02-03 2 RUN 2018-02-11 2 RUN 2018-02-13 Я должен использовать этот запрос в качестве подзапроса и получитьданные, как это: ID RUNS_AFTER_ACTION_1 RUNS_AFTER_ACTION_2 ------------------------------------------- --------------------------- 1 3 5 2 3 3 в принципе, Действие 1 и Действие 2 определяют пределы Мне нужно знать, сколько пробеги, где за ID после действий 1 и 2 Действие было выполнено.
user2818430
1

голосов
1

ответ
28

Просмотры

Запуск тотально в SQL Server на основе состояния [дублировать]

Этот вопрос уже есть ответ здесь: SQL Server - накопленная сумма, которая сбрасывается при 0 встречается 1 ответа я создаю нарастающий итог для определенной группы в последовательности. В промежутках между последовательностью нулевого значения происходит, для которых я должен начать текущую сумму от нулевой записи выберите Сно, Группа, стоимость, сумму (стоимость) в течение (раздела по приказу группы по SNO) Cum_Value из таблицы Выхода: Sno Group Value CumValue - ------------------------------ 1 А 5 5 2 10 15 3 A 25 40 4 А 0 40 5 10 50 6 А 5 55 7 А 0 55 7 A 20 75 Сно Группа Значение CumValue ------------------------------ 1 А 5 5 2 10 15 3 A 25 40 4 А 0 0 -> нуль происходит [начинает работать снова общей] 5 10 10 6 А 5 15 7 А 0 0 ->
Kirthiga
0

голосов
0

ответ
10

Просмотры

Как динамически изменять имя файла в службах отчетов SQL Server При экспорте в Excel

Я использовал службы отчетов SQL Server, чтобы экспортировать файл Excel, прикрепленный к электронной почте, я хочу, чтобы динамически изменять имя файла в качестве текущей даты (например: 20190422.xlsx). Как мне это сделать?
joe
1

голосов
2

ответ
8.4k

Просмотры

Функция импорта данных из текстового файла в таблицу SQL-сервера

Я совершенно новый с SQL Server. У меня есть .txt файл со значениями, разделенными так: 20120101; 001; 2; 0; 0; 0; 0; 0; 8 20120102; 002; 3, 0, 0, 0, 0, 0, 8 20120103; 003 ; 4; 0; 0; 0; 0; 0; 8 ... этот файл находится на сервере, и мне нужно импортировать этот файл каждый день в том же час autommaticaly и обновлять изменения (файл меняется каждый день). Я думал, в создании функции, чтобы сделать это, но я не знаю, если это вообще возможно. Любая помощь будет оценена. Заранее спасибо.
andoni90
1

голосов
2

ответ
15k

Просмотры

Multiple transactions in a single stored procedure

Мне нужно, чтобы удалить данные из 2 таблиц в SQL Server 2008. У меня есть две таблицы A и B. Мне нужно поместить каждый в отдельной транзакции. Это код, я использую. BEGIN TRANSACTION; НАЧАТЬ TRY DELETE от A END TRY CATCH НАЧАТЬ ЕСЛИ @@ TRANCOUNT> 0 ROLLBACK TRANSACTION; END CATCH IF @@ TRANCOUNT> 0 COMMIT TRANSACTION; BEGIN TRANSACTION; НАЧАТЬ TRY Удалить из B END TRY CATCH НАЧАТЬ ЕСЛИ @@ TRANCOUNT> 0 ROLLBACK TRANSACTION; END CATCH IF @@ TRANCOUNT> 0 COMMIT TRANSACTION; Есть ли лучший способ реализовать несколько операций и обработки ошибок в SQL Server? Мне нужно поставить отдельные операции для каждой таблицы. Я получаю сообщение об ошибке, когда одна из операций не удалось. Количество транзакций после EXECUTE указывает на несовпадение количество Бегин и COMMIT заявления.
user1557886
3

голосов
2

ответ
64

Просмотры

Как выбрать верхнюю 3 базы на значение атрибута?

Существует таблица, которая имеет 4 колонки: ID, student_name, phone_num, оценка. И я хочу, чтобы выбрать студенческую базу TOP 3 по счету. таблица: ID | student_name | phone_num | оценка 1 | Джеймс | 001350 | 89 2 | Руй | 123012 | 78 3 | Сибае | 123012 | 65 4 | Ellae | 123012 | 78 5 | Katee | 123012 | 33 Как видно из таблицы, есть два студента имеют одни и те же результаты. Таким образом, они находятся в том же звании. Я пытался использовать «LIMIT», но он может выбрать только 3 строки. SELECT, идентификатор, student_name, оценка FROM таблицы GROUP BY ID, student_name, оценка ORDER BY счет LIMIT 3 Ожидаемые результаты: ID | student_name | оценка 1 | Джеймс | 89 2 | Руй | 78 4 | Ellae | 78 3 | Сибае | 65 Спасибо!
user8400129
0

голосов
0

ответ
14

Просмотры

У меня есть база данных серверной сервера Azure SQL с 50000 строк. Могу ли я использовать доступ для редактирования этого? [на удерживании]

Моя база данных в настоящее время использует веб-интерфейс для доступа, но сохраняя это тяжелая работа, и я хотел бы перейти к решению Microsoft. Моя проблема заключается в том, что я не знаю, что я могу использовать. Был бы признателен за некоторые предложения здесь. Например, можно использовать Access передний конец для подключения к базе данных SQL Server? Было бы разумно допустить, что передний конец, чтобы загрузить все 50000 строк в какой-то контроль сетки или я бы лучше просто использовать Excel для всех ввода и редактирования данных?
Alan2
1

голосов
0

ответ
24

Просмотры

SSIS - Написать журнал в существующем пакете

Я хотел бы включить в журнал, чтобы проверить источник DB в существующем пакете для отслеживания DB детали исходного кода в различных средах. Это существующий пакет, и я совершенно новый для SSIS. Я не знаю, как реализовать в пакете SSIS. Есть ли какие-либо встроенные функциональные возможности доступны в SSIS 2008? Было бы полезно, если есть какая-либо ссылка ссылка.
Ask_SO
1

голосов
1

ответ
483

Просмотры

Searching 13 million records using full text search with additional conditions

Performance issue while doing SQL Server full text search with additional conditions. (SQL Server 2012) I am trying to filter the data based on search filters list (table value parameter), which will return all the records for match filters and single record for the filter doesn't have any record from tables. Full text search index is already on table Names for column SNAME. In stored procedure, table type parameter SearchFilter is used to pass list of name and address info. Both tables have more than 14 million records, when we execute the procedure with 1000 unique records passed in filters list it took around 7 minutes to return the result (1400 records). Filter criteria is: contains(name) and streetaddress, city, state, zip exact match. Is there any alternate to avoid while loop as SQL Server CONTAINS function required string value or variable? CREATE TABLE [dbo].[Names] ( [ID] [int] IDENTITY(1,1) NOT NULL, [UIN] [varchar](9) NULL, [SNAME] [varchar](500) NULL, CONSTRAINT [PK_Names] PRIMARY KEY CLUSTERED ([ID] ASC) ) CREATE TABLE [dbo].[ADDRESSES] ( [UIN] [varchar](9) NULL, [STREET1] [varchar](100) NULL, [STREET2] [varchar](50) NULL, [CITY] [varchar](30) NULL, [STATE] [varchar](2) NULL, [ZIP] [varchar](10) NULL ) ON [PRIMARY] CREATE TYPE [dbo].[SearchFilter] AS TABLE ( [UIN] [varchar](40) NULL, [SNAME] [varchar](max) NULL, [StreetAddress] [varchar](max) NULL, [City] [varchar](max) NULL, [State] [varchar](50) NULL, [Zip] [varchar](20) NULL ) -- Stored procedure logic DECLARE @filterList AS [dbo].[SearchFilter] DECLARE @NoOfRows INT, @counter INT = 0 SET @NoOfRows = (SELECT COUNT(1) FROM @filterList) DECLARE @result TABLE (UIN varchar(40), NAME varchar(500), StreetAddress varchar(1000), Zipcode varchar(20), State varchar(20), City varchar(1000), IsRecordFound varchar(50) ); WHILE (@NoOfRows > @counter) BEGIN DECLARE @SearchName VARCHAR(4000) SET @SearchName = (SELECT '"'+SNAME+'"' FROM @filterList ORDER BY SNAME OFFSET @counter ROWS FETCH NEXT 1 ROWS ONLY) --Start: Process to Select Records ;WITH Filter_CTE AS ( SELECT SNAME, StreetAddress, City, State, ZipCode FROM @filterList ORDER BY SNAME OFFSET @counter ROWS FETCH NEXT 1 ROWS ONLY ) INSERT INTO @result (UIN, NAME, STREETADDRESS, CITY, STATE, ZIPCODE, PHONE, IsRecordFound) SELECT DISTINCT en.UIN, ISNULL(en.SNAME, Filter_CTE.SNAME), Filter_CTE.StreetAddress, Filter_CTE.ZipCode, Filter_CTE.state, Filter_CTE.City, IIF(en.UIN IS NULL, 'Not Found', 'Found') AS IsRecordFound FROM dbo.Names en INNER JOIN dbo.ADDRESSES ea ON en.UIN = ea.UIN RIGHT JOIN Filter_CTE ON ea.ZIP = Filter_CTE.Zip AND ea.STATE = Filter_CTE.State AND ea.CITY = Filter_CTE.City AND (ISNULL(ea.STREET1, '') + ' ' + ISNULL(ea.STREET2, '')) = Filter_CTE.StreetAddress AND CONTAINS(en.SNAME,@SearchName) --END SET @counter += 1 END SELECT UIN, NAME, STREETADDRESS, CITY, STATE, ZIPCODE, PHONE FROM @result
K.Engineer
1

голосов
2

ответ
222

Просмотры

SQL смежности список запросов

Попытка смоделировать зависимости от службы, доступ пользователей. Я создал таблицу родитель / ребенок смежности список стилей, который устанавливает, что «служба» опирается на Компонента 1, которая опирается на Компонента 2, и т.д., и т.д., и тип зависимости, например, полное или частичное изображение показывает расположение - зависимостями изображение Comp 1 и 9 окрашены по-разному, потому что, если они не в состоянии, то общее обслуживание терпит неудачу. Если какие-либо из Comp 2-9 неудачи, то служба продолжается, но только уменьшила упругость. Вот то, что я использовал для создания таблицы CREATE TABLE царапину (KeyId INT PRIMARY KEY NOT NULL, CompDesc ​​VARCHAR (30), CompID INT NOT NULL, ReliesOn INT NOT NULL, RelianceType VARCHAR (30),) INSERT царапанию ВЫБРАТЬ 0, ' Сервис», 0, 1, 'Full' INSERT царапанию ВЫБРАТЬ 1, то я могу запустить очень сырой запрос, чтобы показать 4 различных вариантов пользователи могут получить доступ к услуге - ВЫБРАТЬ t1.ReliesOn AS lev1, t2.ReliesOn как LEV2, t3.ReliesOn как lev3, t4.ReliesOn в lev4, t5.ReliesOn, как lev5, t6.ReliesOn, как lev6 с нуля, как t1 LEFT JOIN нуля, как t2 ON t2.CompID = t1.ReliesOn LEFT JOIN нуля, как t3 = ON t3.CompID t2.ReliesOn LEFT JOIN нуля, как t4 = О t4.CompID t3.ReliesOn LEFT JOIN нуля, как t5 = ON t5.CompID t4.ReliesOn LEFT JOIN нуля, как t6 ON t6.CompID = t5.ReliesOn ГДЕ t1.ReliesOn = 1; (Извинения, есть, вероятно, лучший способ натягивания этот запрос вместе) с этим результатом - lev1 LEV2 lev3 lev4 lev5 lev6 1 2 9 NULL NULL NULL 1 3 9 NULL NULL 1 4 5 6 7 9 1 4 5 6 8 9 NULL Я пытаюсь сделать, это создать запрос, который я могу установить из комп (ы), которые не удалось, и определить, является ли услуга по-прежнему доступен, например Failed Результат 1 Нет сервис 2,3 Снижение Упругость 3,8 Снижение Упругость 2,3,7,8 нет Сервис Это просто очень простой пример, у меня есть еще много, что мне нужно, чтобы добавить к этому, и в большинстве случаев количество услуг будет опираться на те же компоненты. Так, как вы идете из неисправного компа и идти вверх / по / вниз зависимости, чтобы выяснить, если путь до сих пор существует? Будем надеяться, что это имеет смысл, спасибо
Mo R
1

голосов
2

ответ
139

Просмотры

Внутренний присоединиться три таблицы с различными столбцами

У меня есть три таблицы. Таблица 1 и Таблица 2, я могу присоединиться к имени пользователя и таблицы 3, я могу присоединиться к таблице 1 приведены в IP-столбец. Вот пример Sql Script я написал. ВЫБРАТЬ R. [первый раз], Л. [USER], R1. [Порт назначения], L1. [IP-адрес], как 'L1' IP-адрес, L2. [IP-адрес], как 'IP-адрес' L2 из [SAPA_SOCTemp_v1] . [DBO]. [LookUp_15_75] КАК L INNER JOIN [SAPA_SOCTemp_v1]. [DBO]. [Raw_15_244] AS R ON L. [USER] = R. [Источник пользователя] INNER JOIN [SAPA_SOCTemp_v1]. [DBO]. [Raw_15_246 ] как R1 на L. [IP] = R1. [Исходный IP] LEFT JOIN [SAPA_SOCTemp_v1]. [DBO]. [LookUp_15_76] АС L1 на R1. [Destination IP] = L1. [IP-адрес] LEFT JOIN [SAPA_SOCTemp_v1] . [DBO]. [LookUp_15_77] АС L2 по отношению к R1. [Назначение IP] = L2. [IP-адрес] Где L. [USER] = 'support.treasury1' и R. [Источник пользователя] = 'support.treasury1' Это это выход я получаю. Это выход я Ожидая. Это структура три таблицы с данными
Jzl
1

голосов
0

ответ
46

Просмотры

Ни записи или SP подход к тестирующему засоленному полому hashbyte работает

UPDATE: ASP страница по-прежнему всегда возвращает «1», даже если правильный пароль поставляется, но при ХП работает в SSMS, она работает должным образом. Я добавил ЗЕЬЕСТ для полей тестируется и модифицировал ход хранимого прока для возврата записей при выполнении команды. Установите RS2 = cmd1.Execute Response.Write "rs2.PWord =" & "" & RS2 (0) & "" Response.Write "rs2.PWordIN =" & "" & RS2 (1) & "" Response.Write " rs2.ReturnVal = "& "" & RS2 (2) & "" Response.Write "rs2.PWordWSalt =" & "" & RS2 (3) & "" Все данные возвращаются правильно - но возвращаемое значение всегда упорно ' 1' , пока я не запустить его в SSMS. Зачем? Счет работает хранимая процедура имеет достаточных привилегий. Есть ли что-то конкретное, или зарегистрированы, пользователь с правами мудр, что я должен проверить? Кроме того, фактический поставщик соединения MSDASQL.1. ОРИГИНАЛЬНЫЙ ПОСТ: У меня есть хранимая процедура, которая прекрасно работает. Цель состоит в том, чтобы сравнить соль + пароль, хранящийся в таблице с одной и той же соли + с пользовательским паролем. Если сравнение матчей, пароль хорош; в противном случае это не так. Проблема заключается в том, когда я бегу SP в пределах классической страницы ASP / VBScript. два поля набора записей Возвратится пусто, так что сравнение всегда «истина». Выберите toPWord, toPWordSalt, master.dbo.fn_varbintohexsubstring (0, HashBytes ( 'SHA1', toPWordSalt + toPWord), 1, 0), как HashByteValue, master.dbo.fn_varbintohexsubstring (0, HashBytes ( 'SHA1', toPWordSalt +»и отделка (vLogOnPWord) & "'), 1, 0) в качестве HashByteValueCOMP из toUSERS_WORKAREAe", где: topWordSalt является сохраненной солью, используемой; toPWord является сохраненной пароль для пользователя; vLogOnPWord это поставляется пользователем пароль из пользовательского интерфейса ASP / VBScript. Первоначально я пытался CONVERT, а затем перешел на varbintohexsubstring. Либо один возвращает пустое поле в наборе записей: SQLS1 = «Выберите toPWord, toPWordSalt, master.dbo.fn_varbintohexsubstring (0, HashBytes ( 'SHA1', toPWordSalt + toPWord), 1, 0), как HashByteValue, master.dbo.fn_varbintohexsubstring ( 0, HashBytes ( 'SHA1', toPWordSalt +»и обрезки (vLogOnPWord) & "'), 1, 0) в качестве HashByteValueCOMP от toUSERS_WORKAREAe" rs2.Open SQLS1, xConn, adOpenStatic vPWordTest = "" & RS2 "(toPWord") vHashByteValue = "" & RS2 ( "Hashbytevalue" ) VHashByteValue_COMP = «» & RS2 ( «HashbytevalueCOMP»), если IsEmpty (vHashByteValue), то Response.Write «vHashByteValue пуст» конец, если в качестве простого теста запроса, в SSMS, приведенный выше запрос делает поля возврата отлично: результаты набора записей в SSMS Альтернативно я написал SP, «Verify_Hash», который записывает «0», если матч hashbytes, и «1», если они этого не делают. Опять же, выполняя эту SP в SSMS работает отлично. Но вызывается из ASP / VBScript всегда удается (флаг установлен равным «1», а «0», когда поля hashbyte Совпадают). ИСПОЛЬЗОВАНИЕ [10734] GO / ****** Объект: StoredProcedure [DBO] [sp_VerifyHash] Script Дата:. 12/28/2017 11:50:41 AM ****** / SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [DBO]. [Sp_VerifyHash] - добавить параметры для хранимой процедуры здесь @toPWordIN VARCHAR (20), @toPHashErr INT OUTPUT AS BEGIN - SET NOCOUNT ON добавляется для предотвращения дополнительных наборов результатов из - мешая ЗЕЬЕСТ. SET NOCOUNT ON; объявить @toHashByteValue VARCHAR (120) объявлять @toHashByteValueTEST VARCHAR (120) объявлять @toPWord VARCHAR (20) объявлять @toPSalt VARCHAR (120) объявлять @toPHash VARCHAR (120) объявить @toPHashOut VARCHAR (120) Набор @toPWord = (выбрать из toPWord toUSERS_WORKAREAe) Set @toPSalt = (выберите toPWordSalt из toUSERS_WORKAREAe) Set @toPHash = (выберите hashbytes ( 'SHA1', @ toPSalt + @ toPWord) как Hashbytevalue из toUSERS_WORKAREAe) Set @toPHashOut = (выберите hashbytes ( 'SHA1', @ toPSalt + @ toPWordIN ), как HashbyteValueTEST от toUSERS_WORKAREAe), если (@toPHash = @toPHashOut) BEGIN - PRINT 'YES' SET @toPHashErr = '0' UPDATE toUSERS_WORKAREAe SET toPHashErr = '0'; КОНЕЦ еще не BEGIN - PRINT 'NO' SET @toPHashErr = '1' ОБНОВЛЕНИЕ toUSERS_WORKAREAe SET toPHashErr = '1'; END END Этот пароль сравнения логика далеко не полный. Цель заключается фактически сравнить AES-256 зашифрованный ключ, а не простой текст версии. Мой план заключается в использовании, что симметричный ключ значение результата, а не простой текст. Тем не менее, как мой первый шаг я пытался создать код SP и VBScript для обработки логики, и я не могу получить основы работы. SET cmd1 = Server.CreateObject ( "ADODB.Command") SET cmd1.ActiveConnection = xConn cmd1.CommandType = adCmdStoredProc cmd1.CommandText = "sp_VerifyHash" cmd1.Parameters.Append cmd1.CreateParameter ( "@ toPwordIN", adVarChar, 1, 20 , vExistingPWord) '// adParamInput cmd1.Parameters.Append cmd1.CreateParameter ( "@ toPHashErr", adInteger, 4, 1)' // adParamReturnValue cmd1.Execute cmd1.Close RETVAL = cmd1 ( "@ toPHashErr") Response.Write «@ toPHashErr = "& nRETVAL & "" Response.Write "@toPwdCheckOUT =" & CMD (" @ toPwdCheckOUT ") & "" Response.Write "@toHashCheckOUT =" & CMD (" @ toHashCheckOUT ") & "" Наконец, соединение строки: Driver = {SQL Server}; Сервер = WIN-XX0YYZZ8YYY; Database = имя_базы_данный; Trusted_Connection = да; Установите xConn = Server.CreateObject ( «ADODB.Connection») Я был бы счастлив с любым тест сравнения поля работает (с подходом набора записей), OR, хранимая процедура проводка через страницу ASP правильное «0» или «1» значение, так VB-Script может затем прочитать его. Я потратил много часов, пройдя через многие, многие из ваших соответствующих должностей и до сих пор не попадались решения для либо (или обоих) вопросов. Любая помощь вы можете предоставить бы более высокую оценку. Спасибо!
Jan Paul

Просмотр дополнительных вопросов