Это сводится к этому. Unix использует LF (ctrl-J), MS-DOS/Windows использует CR/LF (ctrl-M/Ctrl-J).
при использовании '\n' на Unix он переводится в символ LF. На MS-DOS/Windows это переводится в CR/LF. То, когда Ваш импорт работает на Unix, отформатировало файл, он видит только LF. Следовательно, его часто легче петлять через unix2dos сначала. Но поскольку Вы сказали в Вас исходный вопрос, Вы не хотите делать это (я предположу, что существует серьезное основание, почему Вы не можете).
, Почему не может Вы делать:
(ROWTERMINATOR = CHAR(10))
, Вероятно, потому что, когда код SQL анализируется, это не заменяет символ (10) символом LF (потому что это уже вмонтировано в корпус в одинарных кавычках). Или возможно то, что это было интерпретируемым как:
(ROWTERMINATOR =
)
, Что происходит, когда Вы повторяете содержание @bulk_cmd?
Некоторые из подводных камней:
Я предполагаю, что вы реализуете это в каком-то типе настраиваемого атрибута AuthorizeAttribute, чтобы вы не кодировали его на каждом контроллере, но тогда это будет буквально каждый запрос, который будет возможно, будет больше, чем вам действительно нужно.
Рассматривали ли вы использование какой-либо утилиты анализа журналов IIS? Там уже будет много необходимой информации.
Другой вариант, если вы хотите использовать JavaScript, - это реализовать что-то вроде SiteCatalyst. Вы отправляете запрос с помощью JavaScript от клиента при загрузке страницы в действие контроллера с соответствующей информацией в URL-адресе. например:
www.example.com \ AnalyticsController \ Action \ currentController \ currentAction \ userName
Преимущество состоит в том, что ваше ведение журнала не выполняется последовательно со всеми вашими другими операциями, и вы, вероятно, можете заставить его работать, поместив AJAX вызов на главной странице.
Обратной стороной является то, что он использует JavaScript, который, как указано, может быть отключен. Также было бы очень легко обмануть.
Некоторые мысли ...