2016-11-04 5 views
1

Я использую MS SQL SERVER 2008 базу данных, в которой я создать all objects как procedure, functions, views и т.д. Теперь создать образец программы получить все объекты definition(ddl), здесь я обнаружил, что некоторые из objects definition является нулевой я использовал следующие sql query для get definition всех процедур :SQL SERVER 2008- Не удалось получить определение объекта для нескольких объектов в схеме ddl?

Выбрать object_definition (object_id) от sys.objects где тип = 'P'

Вот мой пример кода:

public class sam { 
    String userName; 
    String dbURL; 
    String password; 

    public sam(String dbURL, String userName, String password) { 
     this.dbURL = dbURL; 
     this.userName = userName; 
     this.password = password; 
    } 

    public void createSQLFile() throws IOException, SQLException, ClassNotFoundException { 
     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
     Connection con = DriverManager.getConnection(dbURL, userName, password); 
     Statement statement = con.createStatement(); 
     String queryString = "Select object_definition(object_id) from sys.objects where type = 'P'"; 
     ResultSet rs = statement.executeQuery(queryString); 
     while (rs.next()) { 
      System.out.println(rs.getString(1)); 
     } 
    } 

государственной статической силы основных (String [] арг) бросает SQLException, IOException, ClassNotFoundException {

String dbURl = "jdbc:sqlserver://localhost:1433;DatabaseName=db"; 
    String userName = "u"; 
    String password = "P"; 
    new sam(dbURl, userName, password).createSQLFile(); 

} 

} Также у меня есть прикрепить скриншоты моей базы данных где указанная процедура (Примечание: выделенное отклонение процедуры равно нулю).
enter image description here

Может кто-нибудь полаг Как получить эти объекта Defination, поскольку они шифруются?

+0

["Пользователь может просматривать только метаданные, используемые пользователем или на которые пользователю предоставлено разрешение. Это означает, что встроенные в метаданные функции, такие как OBJECT_DEFINITION, могут возвращать NULL, если пользователь не имеет никакого разрешения на объект. "] (https://msdn.microsoft.com/en-us/library/ms176090.aspx) – JimmyB

+0

Возможно, также читайте это: https://www.mssqltips.com/sqlservertip/ 2964/encrypting-and-decrypting-sql-server-stored-procedure-views-and-userdefined-functions/ – JimmyB

+0

Благодарим за сообщение. В этой ссылке для зашифрованных объектов требуется ЦАП (выделенное соединение с администратором). Как я могу применить ЦАП в своем примере кода, чтобы я мог подключиться с помощью ЦАП и Каким будет формат URL для использования ЦАП в Java-коде? –

ответ

0

MSDN состояния

Определение пользовательских объектов видна владельца объекта или грантополучателей, которые имеют какой-либо один из следующих разрешений:
ALTER,
CONTROL,
брать на себя ответственность,
или ПРОСМОТРЕТЬ ОПРЕДЕЛЕНИЕ.