我正在使用Apache Tomcat 7.0.41,需要使用官方「com.microsoft.sqlserver.jdbc.SQLServerDriver」-Driver在SQL Server 2012上生成視圖。 不幸的是,選擇Schema似乎有問題。我嘗試了幾種方法來完成它,但它每次都失敗。在指定的MSSQL架構中創建視圖
奇怪的是定期創建表的不會引起任何麻煩:
CREATE TABLE Defschem.dbo.Formate (
[FormatID] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[Info] [varchar](50) NOT NULL UNIQUE,
[FVal] [float] NOT NULL)
試圖做搜索一樣。 (供參考:語句本身和該表名都被分離final Strings
,可單獨改變) :
Create View Defschem.dbo.EtiFormatview as
SELECT
...
FROM Defschem.dbo.Formate
...
失敗,錯誤:
com.microsoft.sqlserver.jdbc.SQLServerException: 'CREATE/ALTER VIEW' does not allow specifying the database name as a prefix to the object name.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
離開數據庫名稱完全放創建視圖在「主」 - 數據庫這不完全是我想要的。
的錯誤是常見的,http://www.sql-server-helper.com/error-messages/msg-166.aspx提示:
"USE " + DATABASENAME + '\n' + "GO " + '\n';
到:
To avoid this error, remove the database name when creating a view: [...] If you need to create a view on another database, change your database first then create the view without the database name:
USE Northwind
GO
CREATE VIEW [dbo].[CustomerCountries]
AS
SELECT DISTINCT [Country]
FROM [dbo].[Customers]
GO
我已經開始整個SQL命令
USE Defschem
GO
Create View Defschem.dbo.EtiFormatview as
SELECT
...
FROM Defschem.dbo.Formate
...
它得到錯誤:
com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near 'GO'.
我不知道如果我的「\ n的是不是爲SQL-服務器不夠漂亮......我無法弄清楚,爲什麼語法應該是不正確的,所以我插入了整個SQL導入SQL-Management Studio ...並且它工作正常!
我很難理解爲什麼同一個命令在Studio中工作,但如果在Java中執行則不行? 的命令是直線前進(我使用的是那些準備定期報表,而不是因爲我不插入任何價值觀和我所有的字符串是決賽):
stat = c.createStatement();
stat.executeUpdate(Info.getUsage()+VIEW);
c.commit();
的官方文檔(http://msdn.microsoft.com/en-us/library/ms187956.aspx - 見「的例子「部分)是指在GO模式之後使用分號的情況。 但改成:
"USE " + DATABASENAME + ";\n" + "GO " + '\n';
給我完全一樣的錯誤。離開'\ n'也沒有效果。
看來有人遇到過類似的問題,前一陣子: How can I specify the current schema for sql server in a jboss data source url?
我以前沒有與同義詞工作,我不認爲這是我的問題的正確方法。有沒有更優雅的解決方案?
謝謝
你說得對 - 我以前從來沒有處理過USE和GO命令高興不要再使用它)。然而,@Donai的回答並不適合我,但是在目錄設置中它按照它應該進行的方式進行。 – Qohelet 2014-10-07 19:42:21