Sql-Server

SQLCMD 命令無法插入重音符號

  • March 4, 2020

我正在嘗試執行sqlcmd.exe以從命令行設置新數據庫。我在 Windows 7 64 位上使用 SQL SERVER Express 2012。

這是我使用的命令:

SQLCMD -S .\MSSQLSERVER08 -V 17 -E -i %~dp0\aqualogyDB.sql -o %~dp0\databaseCreationLog.log 

這是一段 sql 文件創建腳本:

   CREATE DATABASE aqualogy 
   COLLATE Modern_Spanish_CI_AS
   WITH TRUSTWORTHY ON, DB_CHAINING ON;
   GO
   use aqualogy
   GO
   CREATE TABLE [dbo].[BaseLayers] (
   [Code] nchar(100) NOT NULL ,
   [Geometry] nvarchar(MAX) NOT NULL ,
   [IsActive] bit NOT NULL DEFAULT ((1)) 
   )

   EXEC sp_updateextendedproperty @name = N'MS_Description', @value = N'Capas de     cartografía base de la aplicaicón. Consideramos en Galia Móvil la cartografía(...)'
, @level0type = 'SCHEMA', @level0name = N'dbo'
, @level1type = 'TABLE', @level1name = N'BaseLayers'

好吧,請檢查單詞上是否有一些重音;這是表的描述。數據庫創建沒有問題。正如您在隨附的螢幕截圖中所見,腳本可以理解“整理”。儘管如此,在檢查表格時仍無法正確顯示重音符號。整理問題

我真的很感激任何幫助。非常感謝。

$$ Edit $$: 大家好。使用 Notepad++ 更改 SQL 文件編碼效果很好!非常感謝您的幫助:我從這個問題中學到了一些有趣的東西! 在此處輸入圖像描述

從評論來看,問題不完全在於表或 SQLCMD 導入特殊字元的方式。通常,有問題的導入與腳本本身的格式有關。

Management Studio 本身提供了使用特定編碼保存的選項,這應該可以解決未來的問題。第一次保存文件(或使用另存為)時,您應該點擊Save按鈕附近的小箭頭,以使用Save with encoding選項。

在此處輸入圖像描述

預設情況下,它將文件保存在**西歐 (1252)**中。每當我有任何特殊字元時,我都會使用 UTF8(儘管可能適合其他一些限制性編碼),因為它通常是最快的修復。

在此處輸入圖像描述

我不確定(從圖片中)您使用的是 SSMS,因此請確保您自己的編輯器可以選擇以不同的編碼保存文件。如果沒有,在智能編輯器中轉換文件(就像你已經在 Notepad++ 中嘗試過的那樣)通常可以工作。雖然如果您從寬編碼轉換為窄編碼然後再轉換回寬編碼(例如:從 Unicode 到 ANSI 再回到 Unicode),這可能不起作用。

引用自:https://dba.stackexchange.com/questions/40516