Как Вы импортируете большой MS SQL .sql файл?

Существует множество способов предотвращения SQL-инъекций и других SQL-хаков. Вы можете легко найти его в Интернете (Google Search). Конечно, PDO - одно из хороших решений. Но я хотел бы предложить вам некоторые хорошие ссылки с помощью SQL Injection.

Что такое SQL-инъекция и как предотвратить

Руководство PHP для SQL-инъекция

Microsoft объяснение SQL-инъекции и предотвращения в PHP

и некоторые другие, подобные Предотвращение SQL-инъекций с MySQL и PHP

Теперь, почему вам нужно предотвратить запрос из SQL-инъекции?

Я хотел бы сообщить вам: почему мы пытаемся предотвратить SQL-инъекцию с помощью Ниже приведен короткий пример:

Запрос для проверки подлинности входа:

$query="select * from users where email='".$_POST['email']."' and password='".$_POST['password']."' ";

Теперь, если кто-то (хакер) помещает

$_POST['email']= admin@emali.com' OR '1=1

и пароль что-либо ....

Запрос будет анализироваться в системе только до:

$query="select * from users where email='admin@emali.com' OR '1=1';

Другая часть будет отброшена. Итак, что будет? Неавторизованный пользователь (хакер) сможет войти в систему как администратор без своего пароля. Теперь он может делать все, что может сделать администратор / адрес электронной почты. См., Очень опасно, если SQL-инъекция не предотвращается.

228
задан Jim Ashworth 6 February 2017 в 07:46
поделиться

4 ответа

От командной строки запустите sqlcmd:

sqlcmd -S <server> -i C:\<your file here>.sql 

Просто замена <server> с местоположением Вашего поля SQL и <your file here> с названием Вашего сценария. Не забывайте при использовании экземпляра SQL, синтаксис:

sqlcmd -S <server>\instance.

Вот список всех аргументов, можно передать sqlcmd:

Sqlcmd            [-U login id]          [-P password]
  [-S server]            [-H hostname]          [-E trusted connection]
  [-d use database name] [-l login timeout]     [-t query timeout] 
  [-h headers]           [-s colseparator]      [-w screen width]
  [-a packetsize]        [-e echo input]        [-I Enable Quoted Identifiers]
  [-c cmdend]            [-L[c] list servers[clean output]]
  [-q "cmdline query"]   [-Q "cmdline query" and exit] 
  [-m errorlevel]        [-V severitylevel]     [-W remove trailing spaces]
  [-u unicode output]    [-r[0|1] msgs to stderr]
  [-i inputfile]         [-o outputfile]        [-z new password]
  [-f  | i:[,o:]] [-Z new password and exit] 
  [-k[1|2] remove[replace] control characters]
  [-y variable length type display width]
  [-Y fixed length type display width]
  [-p[1] print statistics[colon format]]
  [-R use client regional setting]
  [-b On error batch abort]
  [-v var = "value"...]  [-A dedicated admin connection]
  [-X[1] disable commands, startup script, environment variables [and exit]]
  [-x disable variable substitution]
  [-? show syntax summary] 
419
ответ дан Kevin 23 November 2019 в 03:47
поделиться

Выполните его в командной строке с osql, посмотрите здесь:

http://metrix.fcny.org/wiki/display/dev/How+to+execute+a+.SQL+script+using+OSQL

2
ответ дан BobbyShaftoe 23 November 2019 в 03:47
поделиться

Ваш вопрос весьма схож с этот

, можно сохранить файл как .txt или .sql и выполнить его от Studio управления SQL-сервером (я думаю, что меню, Открываются/Запрашивают, тогда просто выполняют запрос в интерфейсе SSMS). Вам, возможно, придется обновить первую строку, указав на базу данных, которая будет создана или выбрана на Вашей локальной машине.

, Если необходимо делать эту передачу данных очень часто, Вы могли бы тогда пойти для репликации. В зависимости от Ваших потребностей репликация моментальных снимков могла быть в порядке. Если необходимо синхронизировать данные между двумя серверами, Вы могли бы пойти для более сложной модели, такой как репликация слияния.

РЕДАКТИРОВАНИЕ: Я не заметил, что у Вас были проблемы с SSMS, связанным с размером файла. Тогда можно пойти для командной строки, как предложено другими, репликация моментальных снимков (опубликуйте на основном сервере, подпишитесь на локальном, копируйте, затем откажитесь от подписки), или даже копируйте/восстанавливайте

1
ответ дан Community 23 November 2019 в 03:47
поделиться

файл в основном содержат данные для двух новых таблиц.

Тогда можно найти его более простым только к DTS (или SSIS, если это - SQL Server 2005 +), законченные данные, если эти два сервера находятся в той же сети.

, Если эти два сервера не находятся в той же сети, можно скопировать исходную базу данных и восстановить ее к новой базе данных по целевому серверу. Тогда можно использовать DTS/SSIS, или даже простое INSERT INTO SELECT, для передачи этих двух таблиц целевой базе данных.

1
ответ дан P Daddy 23 November 2019 в 03:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: