はずかしながら、SQL Server2000のcreate functionができません。Transact-SQL ヘルプに載っている例をそのまま流しても成功しないのですが、権限等、デフォルトから変更すべきところはありますか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:cx20 No.1

回答回数607ベストアンサー獲得回数108

ポイント30pt

sa ユーザーであれば、とりあえず、

CREATE FUNCTION でユーザー定義関数を作成することが可能です。

詳しくは「Transact-SQL ヘルプ」の「CREATE FUNCTION」の「権限」に関する項目を参照してください。

■ CREATE FUNCTION

> ■ 権限に関する情報

> ユーザーが CREATE FUNCTION ステートメントを実行するには、

> CREATE FUNCTION 権限を持っている必要があります。

>

> CREATE FUNCTION 権限は、特に指定のない限り

> 固定サーバー ロール sysadmin、および

> 固定データベース ロール db_owner および

> db_ddladmin のメンバに与えられます。

> sysadmin および db_owner のメンバは、

> GRANT ステートメントを使用して、

> CREATE FUNCTION 権限をほかのログインに与えることができます。

<参考情報>

■ SQL実践講座 / ユーザー定義関数を作成する

http://www.atmarkit.co.jp/fnetwork/rensai/sql23/sql1.html

@IT:ユーザー定義関数を作成するストアドファンクション

■ データベースの作成と保守 / ユーザー定義関数

id:nakeyouguisu

ありがとうございます。saユーザで権限も確認したのですが、「行 1: ’FUNCTION’ の近くに不正な構文があります。」という情けないエラーに阻まれています。

2005/02/24 15:34:16
id:cx20 No.2

回答回数607ベストアンサー獲得回数108

ポイント30pt

# 念のため、確認ですが、SQL Server のバージョンは、2000 ですよね?

# 「ユーザー定義関数」は、SQL Server 2000 からサポートされている為、

# それより前の SQL Server(7.0など) ですと、エラーになる可能性があります。

「クエリ アナライザ(isqlw.exe)」でエラーがでるようでしたら、

「Enterprise Manager」から、試してみてください。

以下は、手順です。

<「Enterprise Manager」で「ユーザー定義関数」を登録する方法>

1.「プログラム」-「Microsoft SQL Server」-「Enterprise Manager」を起動します。

2. DB を選択し「ユーザー定義関数」を選択します。

例)コンソール ルート¥Microsoft SQL Servers¥SQL Server グループ¥<サーバー名>¥データベース¥<データベース名>¥ユーザー定義関数

[コンソール ルート]

 +[Microsoft SQL Servers]

  +[SQL Server グループ]

   +[<サーバー名>]

    +[データベース]

     +[<データベース名>]

      +[ユーザー定義関数]

3. 「ユーザー定義関数」-「右クリック」-「新規ユーザー定義関数」を選択。

 → 「ユーザー定義関数のプロパティ」ウィンドウが表示されます。

 

4. 「ユーザー定義関数のプロパティ」に「ユーザー定義関数」を入力します。

5. 「構文の確認」ボタンを押下し「ユーザー定義関数」に問題ないことを確認します。

<チェック結果>

---------------------------

SQL Server Enterprise Manager

---------------------------

構文チェックが正常終了しました !

---------------------------

OK

---------------------------

6. 「OK」ボタンを押下し「ユーザー定義関数」を登録します。

→ 「ユーザー定義関数」が登録されます。

<参考情報>

■ SQL Server 2000 ユーザー定義関数

■ SQL Server 2000 自習書 開発編

id:nakeyouguisu

ごめんなさい、ポカミスしていました。

8.0がインストールされていたようです。

お騒がせいたしました。

2005/02/24 18:32:07
  • id:cx20
    SQL Server のバージョンを確認する方法

    > 8.0がインストールされていたようです。

    SQL Server 2000 の内部バージョンは「8.0」です。
    ですので「8.0」であれば、問題ないと思います。

    接続している SQL Server のバージョンを確認するには、

    SELECT @@VERSION もしくは
    SELECT SERVERPROPERTY(’ProductVersion’)

    を実行してみてください。

    以下は、バージョン情報の詳細です。

    <SQL Server 2000 のバージョンについて>

    8.00.194 … SQL Server 2000 製品版
    8.00.384 … データベース コンポーネント SP1 または Desktop Engine SP1
    8.00.534 … データベース コンポーネント SP2 または Desktop Engine SP2
    8.00.760 … データベース コンポーネント SP3 または SP3a、あるいは Desktop Engine SP3 または SP3a

    <参考情報>
    ■ [INF] SQL Server 2000 Service Pack 3a の概要
    http://support.microsoft.com/kb/819334/ja

    既に解決されているようですが、一応、参考まで。
  • id:nakeyouguisu
    Re:SQL Server のバージョンを確認する方法

    コンソールやクエリアナライザなどのバージョン情報は8.0なのですがSELECT @@VERSIONにて出てくるバージョンは7.0でした。
    (もちろん同じDB)
    結果、他の環境を使う事により解決しましたが、7.0以前はfunctionは使えないというのは初めて知りました。ずいぶん昔から使っていた記憶があったのですが、DB違いだったようです。
  • id:cx20
    Re(2):SQL Server のバージョンを確認する方法

    > SELECT @@VERSIONにて出てくるバージョンは7.0でした。

    DB が 7.0 で、クライアントツールが 8.0 だったようですね。

    > 7.0以前はfunctionは使えないというのは初めて知りました。

    新しい DB を古い環境に移植するような場合は、注意が必要ですね。
    (そういうケースは少ないと思いますが・・・)

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません