Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Есть ли DLL для парсинга, проверки синтаксиса SQL-запроса?  [new]
Alex_496
Member [заблокирован]

Откуда: https://www.dvbi.ru
Сообщений: 3869
Добрый день!

Есть ли у кого DLL (.Net) для парсинга, проверки синтаксиса текста SQL-запроса (SQL ANSI, T-SQL, Oracle) ?
27 июл 10, 13:50    [9164559]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли DLL для парсинга, проверки синтаксиса SQL-запроса?  [new]
Azomorph
Member

Откуда:
Сообщений: 300
Alex_496
Добрый день!

Есть ли у кого DLL (.Net) для парсинга, проверки синтаксиса текста SQL-запроса (SQL ANSI, T-SQL, Oracle) ?

для T-SQL в SSMS можно проверить синтаксис без выполнения запроса (Ctrl + F5):)
27 июл 10, 14:07    [9164717]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли DLL для парсинга, проверки синтаксиса SQL-запроса?  [new]
iap
Member

Откуда: Москва
Сообщений: 46954
Перед запросом
SET PARSEONLY ON;
???
BOL
Исследует синтаксис каждой инструкции Transact-SQL и возвращает сообщения об ошибках без компиляции или выполнения инструкции
27 июл 10, 14:18    [9164840]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли DLL для парсинга, проверки синтаксиса SQL-запроса?  [new]
Alex_496
Member [заблокирован]

Откуда: https://www.dvbi.ru
Сообщений: 3869
меня интересует именно DLL для применения в своём Win.Net приложении
27 июл 10, 14:28    [9164977]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли DLL для парсинга, проверки синтаксиса SQL-запроса?  [new]
iap
Member

Откуда: Москва
Сообщений: 46954
Alex_496
меня интересует именно DLL для применения в своём Win.Net приложении
Если найдёте, расскажете, если не затруднит?
Подозреваю, что не найдёте, но мне это тоже интересно...
27 июл 10, 14:48    [9165210]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли DLL для парсинга, проверки синтаксиса SQL-запроса?  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
А метод Prepare в классе SqlCommand разве не проверяет синтаксис?
msdn
27 июл 10, 14:52    [9165258]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли DLL для парсинга, проверки синтаксиса SQL-запроса?  [new]
iap
Member

Откуда: Москва
Сообщений: 46954
Jovanny
А метод Prepare в классе SqlCommand разве не проверяет синтаксис?
msdn
Мне кажется, что с таким же успехом можно рекомендовать просто выполнить команду
и после этого отлавливать ошибку нарушения синтаксиса.
27 июл 10, 15:19    [9165570]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли DLL для парсинга, проверки синтаксиса SQL-запроса?  [new]
iap
Member

Откуда: Москва
Сообщений: 46954
iap
Jovanny
А метод Prepare в классе SqlCommand разве не проверяет синтаксис?
msdn
Мне кажется, что с таким же успехом можно рекомендовать просто выполнить команду
и после этого отлавливать ошибку нарушения синтаксиса.
Я так понял, что хочется проверить синтаксис в отсутствие какого-либо сервера.
27 июл 10, 15:35    [9165709]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли DLL для парсинга, проверки синтаксиса SQL-запроса?  [new]
Glory
Member

Откуда:
Сообщений: 104764
Проверка синтаксиса для трех "диалектов" без участия серверов на халяву ??
Вряд ли такое возможно
27 июл 10, 15:36    [9165715]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли DLL для парсинга, проверки синтаксиса SQL-запроса?  [new]
Alex_496
Member [заблокирован]

Откуда: https://www.dvbi.ru
Сообщений: 3869
Glory,

я прекрасно понимаю, что может и не быть, но все же спросил - а вдруг. И уже не для всех диалектов, а хотя бы какие есть.
Так, для MDX нашел ranet.olap.mdx.dll (проверяет синтаксис и даже форматирует текст) и успешно заюзал её :)
27 июл 10, 15:50    [9165815]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли DLL для парсинга, проверки синтаксиса SQL-запроса?  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62035
iap
Alex_496
меня интересует именно DLL для применения в своём Win.Net приложении
Если найдёте, расскажете, если не затруднит?
Подозреваю, что не найдёте, но мне это тоже интересно...

Есть. Но стоит денег.
27 июл 10, 15:54    [9165853]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли DLL для парсинга, проверки синтаксиса SQL-запроса?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6719
Есть, и на нём даже не сложно форматер сделать. Вот если только руки дойдут.
В SMO классах есть Microsoft.SqlServer.Management.SqlParser.Parser, вместе со студией поставляется. Не знаю как на счёт лицензии.
Сейчас пути к DLL и её название не предоставлю (т.к. бубунта). Что-то типа:
/Program Files/Microsoft SQL Server/90/Tools/binn/VSShell/Common7/IDE/
27 июл 10, 20:32    [9167323]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли DLL для парсинга, проверки синтаксиса SQL-запроса?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6719
Mnior
Сейчас пути к DLL и её название не предоставлю
Подключаете модуль:
C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Microsoft.SqlServer.SqlParser.dll
using Microsoft.SqlServer.SqlParser.SqlCodeDom;
using Microsoft.SqlServer.SqlParser.Parser;

SqlScript sql = Parser.Parse(<Text>, new ParseOptions("GO", true, DatabaseCompatibilityLevel.Version100));
28 июл 10, 14:05    [9171209]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли DLL для парсинга, проверки синтаксиса SQL-запроса?  [new]
Alex_496
Member [заблокирован]

Откуда: https://www.dvbi.ru
Сообщений: 3869
Mnior,

Спасибо !

Так ловим первое сообщение об ошибке:
sqlPrs.Errors.First.Message

Теперь ищу, может ли этот парсер форматировать текст запроса
28 июл 10, 17:26    [9173183]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли DLL для парсинга, проверки синтаксиса SQL-запроса?  [new]
Wizandr
Member

Откуда: Империя Добра
Сообщений: 37031
Alex_496,

если найдешь, поделись плиз. Мне такая штука то-же нужна)
28 июл 10, 17:52    [9173341]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли DLL для парсинга, проверки синтаксиса SQL-запроса?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6719
Alex_496
Теперь ищу, может ли этот парсер форматировать текст запроса
У SqlScript есть свойство Xml. Можно написать XSL трансформатор, а можно тупо пройтись по структурам самого объекта. Работы непочатый край.

Там есть одна сложность - комментарии. Они отсутствуют как элементы структуры, но их можно выкусить т.к. у каждого элемента есть координаты фрагмента в тексте. И вообще, даже если в принципе представляешь как чётко и красиво всё отформатировать, то комментарии явно не вписываются.

Если следовать, что повторное форматирование не должно изменять уже нормально выровненные комментарии, то нужно каким-то макаром оставлять их нетронутыми, т.е. выбирать:
- если позиция последующего кода в тексте "на месте" то оставляется полный коммент,
- иначе код выравнивается, а коммент отстраняют в отдельные строки или в конец строки.
Но они могут встретится в неожиданных местах, т.к. принципы комментирования у каждого разные. Так что задача не решаема в принципе. Точнее - ну их эти комменты.
28 июл 10, 22:32    [9174513]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Есть ли DLL для парсинга, проверки синтаксиса SQL-запроса?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5643
Mnior
Подключаете модуль:
C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Microsoft.SqlServer.SqlParser.dll
using Microsoft.SqlServer.SqlParser.SqlCodeDom;
using Microsoft.SqlServer.SqlParser.Parser;

SqlScript sql = Parser.Parse(<Text>, new ParseOptions("GO", true, DatabaseCompatibilityLevel.Version100));

Недавно всплыла необходимость разбирать скрипты на батчи - понадобилось для их динамической перекомпоновки. Наткнулся в гугле на эту тему. Не знаю, то ли у меня что-то недоустановлено, то ли со времен написания цитируемого многое изменилось, но - во первых, я не нашел у себя сборки Microsoft.SqlServer.SqlParser.dll, а нашел сборку Microsoft.SqlServer.Management.SqlParser.dll. Причем обнаружилась эта сборка только в GAC'е. Во-вторых, метод Parse возвращает экземпляр ParseResult, в котором есть только информация о количестве батчей, и ошибках разбора. Поизучав сборку рефлектором, я-таки смог получить тексты батчей через рефлекшн. Вопрос: я что-то делал не так, или действительно с некоторых пор всё сильно изменилось?
24 окт 13, 16:01    [15027337]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли DLL для парсинга, проверки синтаксиса SQL-запроса?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10436
Сон Веры Павловны
Mnior
Подключаете модуль:
C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Microsoft.SqlServer.SqlParser.dll
using Microsoft.SqlServer.SqlParser.SqlCodeDom;
using Microsoft.SqlServer.SqlParser.Parser;

SqlScript sql = Parser.Parse(<Text>, new ParseOptions("GO", true, DatabaseCompatibilityLevel.Version100));

Недавно всплыла необходимость разбирать скрипты на батчи - понадобилось для их динамической перекомпоновки. Наткнулся в гугле на эту тему. Не знаю, то ли у меня что-то недоустановлено, то ли со времен написания цитируемого многое изменилось, но - во первых, я не нашел у себя сборки Microsoft.SqlServer.SqlParser.dll, а нашел сборку Microsoft.SqlServer.Management.SqlParser.dll. Причем обнаружилась эта сборка только в GAC'е. Во-вторых, метод Parse возвращает экземпляр ParseResult, в котором есть только информация о количестве батчей, и ошибках разбора. Поизучав сборку рефлектором, я-таки смог получить тексты батчей через рефлекшн. Вопрос: я что-то делал не так, или действительно с некоторых пор всё сильно изменилось?


"разбирать скрипты на батчи" - ну так можно и проще побить на куски, собственно GO в начале строки разделитель?
24 окт 13, 16:21    [15027469]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли DLL для парсинга, проверки синтаксиса SQL-запроса?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6719
Сон Веры Павловны
с некоторых пор всё сильно изменилось?
Каждая новая студия чуть ли не переписана заново. Там же интеллисченц появился и другая лабудень.
На что ругаться все уже устали.
Возможно поэтому некоторые пишут свой.
Но с моей точки зрения MS обязана поставлять парсер своего языка.

<Фотка пальца Линуса>

<Мечтательно>Возможно из-за последних перетурбаций начальства они наконец очнутся.
Как это сделала NVidia

Вот тут есть пример как это сделать с "новым" (2008 R2) парсером.

Хотя вам это не нужно, там есть Scaner при помощи которого вы можете позиционироваться до следующего блока. Короче придётся вам поковыряться в либе, доках и форумах.

Ещё огорчает то что в 2012-м редактор совершенно другой (и парсер видимо тоже), и им пользоваться совершенно неудобно.
И Если в VS можно настроить, то тут шиш.

Кароче, индусы убивают IT отрасль планеты.
24 окт 13, 21:46    [15028855]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли DLL для парсинга, проверки синтаксиса SQL-запроса?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5643
Winnipuh
"разбирать скрипты на батчи" - ну так можно и проще побить на куски, собственно GO в начале строки разделитель?

Не можно и не проще. Потому как задача несколько шире, чем тупо побить текст скрипта по batch separator. Нужно еще а) синтаксически валидировать скрипт; б) примерно знать, что какой батч делает. В случае использования SMO-парсера я у каждого батча могу получить коллекцию токенов (опять же, через рефлекшн), и по ним определить, что вот этот батч, например, выполняет use database, этот - устанавливает set option, и т.п.
Mnior
Вот тут есть пример как это сделать с "новым" (2008 R2) парсером.

Да, спасибо, я примерно так и сделал - я писал выше про рефлекшн.
Mnior
Хотя вам это не нужно, там есть Scaner при помощи которого вы можете позиционироваться до следующего блока.

С ним я тоже ковырялся. В крайнем случае можно было бы обойтись и сканнером, но не хотелось собирать батч по токенам, сохранять эти токены в промежуточном классе, ловить по токенам batch separator, и проч. Особенно когда я увидел, что всё нужное уже есть в ParseResult - но оно internal. Зачем эти индусы так сделали - абсолютно непонятно.
25 окт 13, 03:35    [15029402]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Есть ли DLL для парсинга, проверки синтаксиса SQL-запроса?  [new]
_human
Member

Откуда:
Сообщений: 556
допустим есть некий код
+
	if object_id('#TempTable1') is not null
		drop table #TempTable1
	create table #TempTable1 
	(
		Col1 int null
	) 
	alter table #TempTable1 
		add Col2 bit null


	if object_id('dbo.BaseTableSample') is not null
		drop table dbo.BaseTableSample
	create table dbo.BaseTableSample 
	(
		Col1 int null
	) 
	alter table dbo.BaseTableSample 
		add Col2 bit null

что в "переводе" выглядит как
+
TOKEN_IF
TOKEN_ID
40
TOKEN_STRING
41
TOKEN_IS
TOKEN_NOT
TOKEN_NULL
TOKEN_DROP
TOKEN_TABLE
TOKEN_ID
TOKEN_CREATE
TOKEN_TABLE
TOKEN_ID
LEX_WHITE
40
TOKEN_ID
TOKEN_ID
TOKEN_NULL
41
TOKEN_ALTER
TOKEN_TABLE
TOKEN_ID
TOKEN_ADD
TOKEN_ID
TOKEN_ID
TOKEN_NULL
59
TOKEN_IF
TOKEN_ID
40
TOKEN_STRING
41
TOKEN_IS
TOKEN_NOT
TOKEN_NULL
TOKEN_DROP
TOKEN_TABLE
TOKEN_ID
46
TOKEN_ID
TOKEN_CREATE
TOKEN_TABLE
TOKEN_ID
46
TOKEN_ID
LEX_WHITE
40
TOKEN_ID
TOKEN_ID
TOKEN_NULL
41
TOKEN_ALTER
TOKEN_TABLE
TOKEN_ID
46
TOKEN_ID
TOKEN_ADD
TOKEN_ID
TOKEN_ID
TOKEN_NULL


вопрос: сервер неявно делит на batch-и?
главный вопрос: как разбить на батчи?

ожидаемый результат
+
TOKEN_IF
TOKEN_ID
40
TOKEN_STRING
41
TOKEN_IS
TOKEN_NOT
TOKEN_NULL
TOKEN_DROP
TOKEN_TABLE
TOKEN_ID
--SEPARATOR--
TOKEN_CREATE
TOKEN_TABLE
TOKEN_ID
LEX_WHITE
40
TOKEN_ID
TOKEN_ID
TOKEN_NULL
41
--SEPARATOR--
TOKEN_ALTER
TOKEN_TABLE
TOKEN_ID
TOKEN_ADD
TOKEN_ID
TOKEN_ID
TOKEN_NULL
59
--SEPARATOR--
TOKEN_IF
TOKEN_ID
40
TOKEN_STRING
41
TOKEN_IS
TOKEN_NOT
TOKEN_NULL
TOKEN_DROP
TOKEN_TABLE
TOKEN_ID
46
TOKEN_ID
--SEPARATOR--
TOKEN_CREATE
TOKEN_TABLE
TOKEN_ID
46
TOKEN_ID
LEX_WHITE
40
TOKEN_ID
TOKEN_ID
TOKEN_NULL
41
--SEPARATOR--
TOKEN_ALTER
TOKEN_TABLE
TOKEN_ID
46
TOKEN_ID
TOKEN_ADD
TOKEN_ID
TOKEN_ID
TOKEN_NULL


например сервер понимает что там несколько Statements
если посмотреть в план

+
<Statements>
  <StmtCond StatementCompId="3" StatementId="2" StatementText="if object_id('#TempTable1') is not null" StatementType="COND" RetrievedFromCache="true">
    <Condition />
    <Then>
      <Statements>
        <StmtSimple StatementCompId="4" StatementId="3" StatementText="&#xD;&#xA;		drop table #TempTable1&#xD;&#xA;	" StatementType="DROP OBJECT" RetrievedFromCache="true" />
      </Statements>
    </Then>
  </StmtCond>
  <StmtSimple StatementCompId="6" StatementId="4" StatementText="create table #TempTable1 &#xD;&#xA;	(&#xD;&#xA;		Col1 int null&#xD;&#xA;	) &#xD;&#xA;	" StatementType="CREATE TABLE" RetrievedFromCache="true" />
  <StmtSimple StatementCompId="7" StatementId="5" StatementText="alter table #TempTable1 &#xD;&#xA;		add Col2 bit null" StatementType="ALTER TABLE" RetrievedFromCache="true" />
  <StmtCond StatementCompId="8" StatementId="6" StatementText="&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;	if object_id('dbo.BaseTableSample') is not null" StatementType="COND" RetrievedFromCache="true">
    <Condition />
    <Then>
      <Statements>
        <StmtSimple StatementCompId="9" StatementId="7" StatementText="&#xD;&#xA;		drop table dbo.BaseTableSample&#xD;&#xA;	" StatementType="DROP OBJECT" RetrievedFromCache="true" />
      </Statements>
    </Then>
  </StmtCond>
  <StmtSimple StatementCompId="11" StatementId="8" StatementText="create table dbo.BaseTableSample &#xD;&#xA;	(&#xD;&#xA;		Col1 int null&#xD;&#xA;	) &#xD;&#xA;	" StatementType="CREATE TABLE" RetrievedFromCache="true" />
  <StmtSimple StatementCompId="12" StatementId="9" StatementText="alter table dbo.BaseTableSample &#xD;&#xA;		add Col2 bit null" StatementType="ALTER TABLE" RetrievedFromCache="true" />
</Statements>


SqlParser такое могет ?
28 дек 16, 20:52    [20058132]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли DLL для парсинга, проверки синтаксиса SQL-запроса?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5643
_human
SqlParser такое могет ?

Могет. Только в вашем случае это не батчи, а statements - отдельное свойство-коллекция батча. Получить и разобрать её, как обычно в случае с SqlParser'ом, можно только через рефлекшн, т.к. большинство задействованных классов - internal.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using Microsoft.SqlServer.Management.SqlParser.Common;
using Microsoft.SqlServer.Management.SqlParser.Parser;

namespace test
{
  class Program
  {
    static void Main()
    {
      var sql = @"
  if object_id('#TempTable1') is not null
    drop table #TempTable1
  create table #TempTable1 
  (
    Col1 int null
  ) 
  alter table #TempTable1 
    add Col2 bit null


  if object_id('dbo.BaseTableSample') is not null
    drop table dbo.BaseTableSample
  create table dbo.BaseTableSample 
  (
    Col1 int null
  ) 
  alter table dbo.BaseTableSample 
    add Col2 bit null
      ";
      var parseResult = Parser.Parse(sql, new ParseOptions("GO", true, DatabaseCompatibilityLevel.Version100));
      var script = typeof(ParseResult).GetProperty("Script", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(parseResult, null);
      var children = (IEnumerable<object>)script.GetType().GetProperty("Children", BindingFlags.Instance | BindingFlags.Public).GetValue(script, null);
      foreach(var batch in children)
      {
        var statements = (IEnumerable<object>)batch.GetType().GetProperty("Statements", BindingFlags.Instance | BindingFlags.Public).GetValue(batch, null);
        foreach(var statement in statements)
        {
          var statementSql = (string)statement.GetType().GetProperty("Sql", BindingFlags.Instance | BindingFlags.Public).GetValue(statement, null);
          var tokens = (IEnumerable<Token>)statement.GetType().GetProperty("Tokens", BindingFlags.Instance | BindingFlags.Public).GetValue(statement, null);
          Console.WriteLine(statementSql);
          tokens.Select(t=>t.Type).ToList().ForEach(Console.WriteLine);
          Console.WriteLine("==============================================");
        }
      }
      Console.WriteLine("done");
      Console.ReadKey(true);
    }
  }
}

консольный вывод:
+


if object_id('#TempTable1') is not null
drop table #TempTable1
TOKEN_IF
LEX_WHITE
TOKEN_ID
(
TOKEN_STRING
)
LEX_WHITE
TOKEN_IS
LEX_WHITE
TOKEN_NOT
LEX_WHITE
TOKEN_NULL
LEX_WHITE
TOKEN_DROP
LEX_WHITE
TOKEN_TABLE
LEX_WHITE
TOKEN_ID
==============================================
create table #TempTable1
(
Col1 int null
)
TOKEN_CREATE
LEX_WHITE
TOKEN_TABLE
LEX_WHITE
TOKEN_ID
LEX_WHITE
(
LEX_WHITE
TOKEN_ID
LEX_WHITE
TOKEN_ID
LEX_WHITE
TOKEN_NULL
LEX_WHITE
)
==============================================
alter table #TempTable1
add Col2 bit null
TOKEN_ALTER
LEX_WHITE
TOKEN_TABLE
LEX_WHITE
TOKEN_ID
LEX_WHITE
TOKEN_ADD
LEX_WHITE
TOKEN_ID
LEX_WHITE
TOKEN_ID
LEX_WHITE
TOKEN_NULL
==============================================
if object_id('dbo.BaseTableSample') is not null
drop table dbo.BaseTableSample
TOKEN_IF
LEX_WHITE
TOKEN_ID
(
TOKEN_STRING
)
LEX_WHITE
TOKEN_IS
LEX_WHITE
TOKEN_NOT
LEX_WHITE
TOKEN_NULL
LEX_WHITE
TOKEN_DROP
LEX_WHITE
TOKEN_TABLE
LEX_WHITE
TOKEN_ID
.
TOKEN_ID
==============================================
create table dbo.BaseTableSample
(
Col1 int null
)
TOKEN_CREATE
LEX_WHITE
TOKEN_TABLE
LEX_WHITE
TOKEN_ID
.
TOKEN_ID
LEX_WHITE
(
LEX_WHITE
TOKEN_ID
LEX_WHITE
TOKEN_ID
LEX_WHITE
TOKEN_NULL
LEX_WHITE
)
==============================================
alter table dbo.BaseTableSample
add Col2 bit null
TOKEN_ALTER
LEX_WHITE
TOKEN_TABLE
LEX_WHITE
TOKEN_ID
.
TOKEN_ID
LEX_WHITE
TOKEN_ADD
LEX_WHITE
TOKEN_ID
LEX_WHITE
TOKEN_ID
LEX_WHITE
TOKEN_NULL
==============================================
done
29 дек 16, 07:54    [20058751]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли DLL для парсинга, проверки синтаксиса SQL-запроса?  [new]
_human
Member

Откуда:
Сообщений: 556
Сон Веры Павловны,

Агонь.
То что нужно.

Только вот заминка с Microsoft.SqlServer.Management.SqlParser.dll
Сервер отказывается ее лоадить с Permission set "Safe", т.к. она не проходит валидацию...

Ктонить лоадил ее с Permission set Unsafe или ExternalAccess ?
29 янв 17, 18:06    [20158902]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли DLL для парсинга, проверки синтаксиса SQL-запроса?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3462
_human
Сон Веры Павловны,

Агонь.
То что нужно.

Только вот заминка с Microsoft.SqlServer.Management.SqlParser.dll
Сервер отказывается ее лоадить с Permission set "Safe", т.к. она не проходит валидацию...

Ктонить лоадил ее с Permission set Unsafe или ExternalAccess ?


Вы загружаете эту ассембли в сервер? зачем?
Грузите Unsafe
30 янв 17, 14:48    [20162148]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли DLL для парсинга, проверки синтаксиса SQL-запроса?  [new]
abc_reply
Guest
Ролг Хупин,

автор
Вы загружаете эту ассембли в сервер? зачем?


т.к. моя dll отказывается лоадится

Msg 6503, Level 16, State 12, Line 24
Assembly 'microsoft.sqlserver.management.sqlparser, version=12.0.0.0, culture=neutral, publickeytoken=89845dcd8080cc91.' was not found in the SQL catalog.

автор
Грузите Unsafe

еще что-то хочет...
в любом случае UNSAFE и EXTERNAL ACCESS не вариант

Warning: The SQL Server client assembly 'microsoft.sqlserver.management.sqlparser, version=12.0.0.0, culture=neutral, publickeytoken=89845dcd8080cc91, processorarchitecture=msil.' you are registering is not fully tested in SQL Server hosted environment.
Msg 10327, Level 14, State 1, Line 19
CREATE ASSEMBLY for assembly 'Microsoft.SqlServer.Management.SqlParser' failed because assembly 'Microsoft.SqlServer.Management.SqlParser' is not authorized for PERMISSION_SET = UNSAFE. The assembly is authorized when either of the following is true: the database owner (DBO) has UNSAFE ASSEMBLY permission and the database has the TRUSTWORTHY database property on; or the assembly is signed with a certificate or an asymmetric key that has a corresponding login with UNSAFE ASSEMBLY permission.
30 янв 17, 17:18    [20162970]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить